PIVOT を使用して SQL Server データを転置する方法
SQL Server の PIVOT 演算子を使用すると、データを行から列に変換できます。縦向きのフォームから横向きのフォームへ。これは、複数の属性に基づいてデータを要約する場合に役立ちます。
サンプル データと必要な出力
次の開始データセットを考えてみましょう:
SELECT Name1, Name2, Value FROM mytable Name1 | Name2 | Value ------- ------- ------ A | P1 | 1 A | P2 | 1 A | P3 | 2 B | P1 | 3 B | P2 | 1 B | P4 | 1
望ましい出力は、PIVOT 演算子が Name1 列の値を列ヘッダーに変換し、Value 列の値が Name2 列によって要約されるようにデータをピボットすることです。
SQL Server 2005 の PIVOT を使用したデータの転置
SQL Server 2005 の場合、PIVOT 演算子次の方法で使用できます:
DECLARE @cols VARCHAR(1000) DECLARE @sqlquery VARCHAR(2000) SELECT @cols = STUFF(( SELECT distinct ',' QuoteName([Name1]) FROM myTable FOR XML PATH('') ), 1, 1, '') SET @sqlquery = 'SELECT * FROM (SELECT Name2, Name1, Value FROM myTable ) base PIVOT (Sum(Value) FOR [Name1] IN (' @cols ')) AS finalpivot' EXECUTE ( @sqlquery )
このクエリは、Name1 列の個別の値に基づいて PIVOT クエリを動的に生成し、それに応じて列ヘッダーを組み立て、データを要約します。最終的に、結果は目的の形式で転置されたデータになります:
P1 P2 P3 P4 ------- ------- ------- ------- 1 1 2 NULL 3 1 NULL 1
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3