ホームページ > データベース > mysql チュートリアル > T-SQL でデータを動的にピボットする方法

T-SQL でデータを動的にピボットする方法

Patricia Arquette
リリース: 2025-01-14 20:10:48
オリジナル
572 人が閲覧しました

How to Dynamically Pivot Data in T-SQL?

T-SQL の動的ピボット

データ処理の分野では、動的ピボットはデータを行形式から列形式に変換する際に重要な役割を果たします。これは、データを集約して構造化した方法で表示する必要がある場合に特に便利です。

次の形式のデータを含むテーブルがあるとします:

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 の動的ピボットを使用すると、静的 SQL ステートメントを必要とせずに、この変換を動的に実装できます。次のコードは、このタスクを実行する方法を示しています:

<code class="language-sql">CREATE TABLE #Table (
        ID INT,
        ColumnName VARCHAR(250),
        Value VARCHAR(250)
)

INSERT INTO #Table SELECT 1,'name','Peter' 
INSERT INTO #Table SELECT 1,'phone','12345678' 
INSERT INTO #Table SELECT 1,'email','[email protected]' 
INSERT INTO #Table SELECT 2,'name','John' 
INSERT INTO #Table SELECT 2,'phone','87654321' 
INSERT INTO #Table SELECT 2,'email','[email protected]' 
INSERT INTO #Table SELECT 3,'name','Sarah' 
INSERT INTO #Table SELECT 3,'phone','55667788' 
INSERT INTO #Table SELECT 3,'email','[email protected]' 

DECLARE @cols NVARCHAR(2000) 
DECLARE @query NVARCHAR(4000) 

SELECT  @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT 
                                '],[' + t.ColumnName 
                        FROM    #Table AS t 
                        FOR XML PATH('') 
                      ), 1, 2, '') + ']' 

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;' 

EXECUTE(@query)

DROP TABLE #Table</code>
ログイン後にコピー

このコードでは、STUFF 関数と EXECUTE 関数を使用して動的 SQL ステートメントを構築します。構築されたクエリは、テーブル内のさまざまな列名に基づいて PIVOT ステートメントを動的に生成します。 MAX() 集計関数は、各列の最新の値が返されることを保証します。

最終結果は、データをピボット形式で表示するニーズを満たす変換されたテーブルです。この手法は、大規模なデータ セットや複雑なデータ構造を扱う場合に特に役立ちます。

以上がT-SQL でデータを動的にピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート