sqlピボットは、複数行を複数列に変換する方法は何ですか?

SQLで複数行のデータを転置し、複数列のデータに変換するために、CASE WHEN文と集計関数を組み合わせることができる。具体的な手順は以下の通りです。

  1. グループ化する
  2. 場合によって
  3. 列を転置した後、集計関数を使用して列を集計します。

以下は例です。注文テーブル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値が表示されます。

bannerAds