sqlピボットは、複数行を複数列に変換する方法は何ですか?
SQLで複数行のデータを転置し、複数列のデータに変換するために、CASE WHEN文と集計関数を組み合わせることができる。具体的な手順は以下の通りです。
- グループ化する
- 場合によって
- 列を転置した後、集計関数を使用して列を集計します。
以下は例です。注文テーブルOrdersがあると仮定します。このテーブルには注文番号(OrderID)、商品名(ProductName)、販売数量(Quantity)が含まれています。
SELECT OrderID,
MAX(CASE WHEN ProductName = 'Product A' THEN Quantity END) AS ProductA,
MAX(CASE WHEN ProductName = 'Product B' THEN Quantity END) AS ProductB,
MAX(CASE WHEN ProductName = 'Product C' THEN Quantity END) AS ProductC
FROM Orders
GROUP BY OrderID;
上記のクエリは、各注文の商品数量を対応する列に変換し、出力結果は以下の表のようになります。
OrderID | ProductA | ProductB | ProductC
--------+----------+----------+---------
1 | 5 | 2 | NULL
2 | 3 | NULL | 1
3 | NULL | 4 | 3
上記の例では、CASE WHEN文を使用して商品名を対応する列に変換し、各列の値をMAX関数で集計します。商品に対応する注文がない場合、対応する列にはNULL値が表示されます。