ホームページ >データベース >mysql チュートリアル >T-SQL で表形式データの動的なピボットを実現するにはどうすればよいですか?

T-SQL で表形式データの動的なピボットを実現するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-14 20:20:45868ブラウズ

How to Achieve Dynamic Pivoting of Tabular Data in T-SQL?

T-SQL の動的ピボット

表形式のデータをより簡潔な形式に変換することは、データ分析とレポート生成にとって重要です。一般的に使用される手法の 1 つはピボットです。これには、行を列に変換することが含まれます。この例の目標は、次のような構造を持つテーブルからデータをピボットすることです:

ItemID ColumnName Value
1 name Peter
1 phone 12345678
1 email [email protected]
2 name John
2 phone 87654321
2 email [email protected]
3 name Sarah
3 phone 55667788
3 email [email protected]

よりユーザーフレンドリーな構造に変換します:

ItemID name phone email
1 Peter 12345678 [email protected]
2 John 87654321 [email protected]
3 Sarah 55667788 [email protected]

動的ピボットを使用して T-SQL でこれを実現するには、次の手順に従います。

  1. 動的列リストを作成します:

    <code class="language-sql"> DECLARE @cols NVARCHAR(2000)
     SELECT  @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT
                                      '],[' + t.ColumnName
                              FROM    #Table AS t
                              FOR XML PATH('')
                            ), 1, 2, '') + ']' </code>
  2. 動的クエリを作成します:

    <code class="language-sql"> DECLARE @query NVARCHAR(4000) 
     SET @query = N'SELECT ID,'+ @cols +' FROM 
     (SELECT t1.ID,t1.ColumnName , t1.Value FROM #Table AS t1) p 
     PIVOT (MAX([Value]) FOR ColumnName IN ( '+ @cols +' )) 
     AS pvt;' </code>
  3. クエリの実行:

    <code class="language-sql"> EXECUTE(@query)</code>

生成されたクエリはデータを動的にピボットし、よりコンパクトで読みやすいテーブル構造を作成します。

このアプローチは、特に列名が動的であるか変更される可能性がある場合に、データをピボットするための柔軟なメカニズムを提供します。これにより、効率的かつ自動化されたデータ変換が可能になり、さまざまなデータ分析およびレポート アプリケーションにとって強力なツールになります。

以上がT-SQL で表形式データの動的なピボットを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。