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

SQL Serverでデータを動的にピボットする方法は?

DDD
リリース: 2025-01-25 18:52:11
オリジナル
211 人が閲覧しました

How to Dynamically Pivot Data in SQL Server?

SQL Server 動的ピボット クエリ

この記事では、カテゴリを列、日付を行として、データセットを垂直形式から水平形式に変換する方法について説明します。これは通常、PIVOT 演算子を使用して実現されます。

次の SQL コードは、temp という名前の一時テーブル内のデータセットを初期化します。 PIVOT クエリの構築には動的 SQL が使用されます。 @cols変数は、さまざまなカテゴリをカンマ区切りの文字列に連結します。 @query変数は、日付ごとにグループ化し、カテゴリごとにピボットする実際の PIVOT クエリを構築します。

<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT date, ' + @cols + ' from 
            (
                select date
                    , amount
                    , category
                from temp
           ) x
            pivot 
            (
                 max(amount)
                for category in (' + @cols + ')
            ) p '</code>
ログイン後にコピー

このクエリを実行すると、望ましい結果が得られます:

<code>日期                        ABC         DEF    GHI
2012-01-01 00:00:00.000     1000.00     NULL    NULL
2012-02-01 00:00:00.000     NULL        500.00  800.00
2012-02-10 00:00:00.000     NULL        700.00  NULL
2012-03-01 00:00:00.000     1100.00     NULL    NULL</code>
ログイン後にコピー

この動的なアプローチにより、クエリ構造を変更せずに、必要に応じてカテゴリを調整できます。パフォーマンスの問題を避けるために、使用後は必ず一時テーブルを削除してください。

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

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