「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PIVOT 演算子を使用して SQL Server でデータを転置する方法

PIVOT 演算子を使用して SQL Server でデータを転置する方法

2024 年 12 月 23 日に公開
ブラウズ:768

How to Transpose Data in SQL Server Using the PIVOT Operator?

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