📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

UNPIVOT



UNPIVOT 操作は、カラムを行に変換することでテーブルを回転させます。

これは、2 つのカラム(テーブルまたはサブクエリから)とカラムのリストを受け取り、リストで指定された各カラムに対して 1 行を生成するリレーショナル演算子です。クエリでは、テーブル名またはサブクエリの後の FROM 句で指定します。

関連情報: PIVOT

構文

SELECT ... FROM ... UNPIVOT ( <value_column> FOR <name_column> IN ( <column_list> ) ) [ ... ]

以下のとおりです。

  • <value_column>: <column_list> に列挙されたカラムから抽出された値を格納するカラムです。
  • <name_column>: 値の抽出元となったカラム名を格納するカラムです。
  • <column_list>: UNPIVOT の対象となるカラムのリストで、カンマ区切りで指定します。AS を使うか、文字列リテラルだけを指定して、カラム名に別名を付けることもできます。

例

各従業員について、月ごとの個別カラムを UNPIVOT して、月ごとの単一の売上値を返してみましょう。

データの作成と挿入

-- Create the unpivoted_monthly_sales table CREATE TABLE unpivoted_monthly_sales( empid INT, jan INT, feb INT, mar INT, apr INT ); -- Insert sales data INSERT INTO unpivoted_monthly_sales VALUES (1, 10400, 8000, 11000, 18000), (2, 39500, 90700, 12000, 5300);

UNPIVOT の使用

SELECT * FROM unpivoted_monthly_sales UNPIVOT (amount FOR month IN (jan as 'Jan', feb AS 'Feb', mar 'MARCH', apr));

出力:

┌──────────────────────────────────────────────────────┐ │ empid │ month │ amount │ ├─────────────────┼──────────────────┼─────────────────┤ │ 1 │ Jan │ 10400 │ │ 1 │ Feb │ 8000 │ │ 1 │ MARCH │ 11000 │ │ 1 │ apr │ 18000 │ │ 2 │ Jan │ 39500 │ │ 2 │ Feb │ 90700 │ │ 2 │ MARCH │ 12000 │ │ 2 │ apr │ 5300 │ └──────────────────────────────────────────────────────┘

このページは役に立ちましたか?