sql >> データベース >  >> RDS >> Mysql

SQLクエリ結果の列名として列値を設定する

    これは、ピボットテーブルを使用して行われます。 。 idによるグループ化 、CASEを発行します 列にキャプチャしてMAX()のようなものを使用する各値のステートメント 集計してヌルを削除し、1行に折りたたみます。

    SELECT
      id,
      /* if col1 matches the name string of this CASE, return col2, otherwise return NULL */
      /* Then, the outer MAX() aggregate will eliminate all NULLs and collapse it down to one row per id */
      MAX(CASE WHEN (col1 = 'name') THEN col2 ELSE NULL END) AS name,
      MAX(CASE WHEN (col1 = 'name2') THEN col2 ELSE NULL END) AS name2,
      MAX(CASE WHEN (col1 = 'name3') THEN col2 ELSE NULL END) AS name3
    FROM
      yourtable
    GROUP BY id
    ORDER BY id
    

    これが実用的なサンプルです

    注:これは、col1の可能な値の有限で既知の数に対してのみそのまま機能します。 。可能な値の数が不明な場合は、SQLステートメントを動的にループで構築する必要があります。



    1. OracleDatabaseのPL/SQLパッケージの概要

    2. SQLServerでのカスタムの日付/時刻の書式設定

    3. MariaDBのストレージエンジンオプションの調査

    4. Oracleで2つのタイムスタンプの差を計算する方法