ホームページ >データベース >mysql チュートリアル >T-SQL で表形式データの動的なピボットを実現するにはどうすればよいですか?
T-SQL の動的ピボット
表形式のデータをより簡潔な形式に変換することは、データ分析とレポート生成にとって重要です。一般的に使用される手法の 1 つはピボットです。これには、行を列に変換することが含まれます。この例の目標は、次のような構造を持つテーブルからデータをピボットすることです:
ItemID | ColumnName | Value |
---|---|---|
1 | name | Peter |
1 | phone | 12345678 |
1 | [email protected] | |
2 | name | John |
2 | phone | 87654321 |
2 | [email protected] | |
3 | name | Sarah |
3 | phone | 55667788 |
3 | [email protected] |
よりユーザーフレンドリーな構造に変換します:
ItemID | name | phone | |
---|---|---|---|
1 | Peter | 12345678 | [email protected] |
2 | John | 87654321 | [email protected] |
3 | Sarah | 55667788 | [email protected] |
動的ピボットを使用して T-SQL でこれを実現するには、次の手順に従います。
動的列リストを作成します:
<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>
動的クエリを作成します:
<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>
クエリの実行:
<code class="language-sql"> EXECUTE(@query)</code>
生成されたクエリはデータを動的にピボットし、よりコンパクトで読みやすいテーブル構造を作成します。
このアプローチは、特に列名が動的であるか変更される可能性がある場合に、データをピボットするための柔軟なメカニズムを提供します。これにより、効率的かつ自動化されたデータ変換が可能になり、さまざまなデータ分析およびレポート アプリケーションにとって強力なツールになります。
以上がT-SQL で表形式データの動的なピボットを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。