SQL Server での複数の列のピボット
ピボットは、列のデータを行に配置できる SQL の変換手法です。このコンテキストでは、カテゴリ列を行にピボットし、各カテゴリの売上、在庫、目標値を表示することを目的としています。
サンプル入力:
Branch Category Sales Stock Target Branch1 Panel 100 20 30 Branch1 AC 120 30 40 Branch1 Ref 150 40 50
望ましい出力:
Branch | Panel | AC | Ref |
---|---|---|---|
Branch1 | 100 | 120 | 150 |
Branch1 | 20 | 30 | 40 |
Branch1 | 30 | 40 | 50 |
解決策:
目的の出力を達成するには、複数のピボットを実行する必要があります操作:
SELECT * FROM ( SELECT Branch, Category, Category+'1' As Category1, Category+'2' As Category2, Sales, Stock, Target FROM TblPivot ) AS P -- For Sales PIVOT ( SUM(Sales) FOR Category IN ([Panel], [AC], [Ref]) ) AS pv1 -- For Stock PIVOT ( SUM(Stock) FOR Category1 IN ([Panel1], [AC1], [Ref1]) ) AS pv2 -- For Target PIVOT ( SUM(Target) FOR Category2 IN ([Panel2], [AC2], [Ref2]) ) AS pv3
注:
さらに、pv3 で集計関数を使用して、必要に応じてデータをさらに集計することができます。
以上がSQL Server で複数の列を同時にピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。