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

SQL Server で動的列を使用してデータを動的にピボットする方法

DDD
リリース: 2024-12-31 11:47:10
オリジナル
183 人が閲覧しました

How to Dynamically Pivot Data in SQL Server with Dynamic Columns?

動的列用の動的 SQL Server PIVOT

複数の列 ('Name1' および 'Name2') と値を含むデータセットがあります。列 (「値」)。このデータを、'Name1' が列ヘッダーとなり、値が 'Name2' によって集計されるピボット形式に変換したいと考えています。

動的 SQL によるソリューション (SQL Server 2005 以降)

SQL Server 2005 では動的 SQL が許可されているため、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' 値がいくつあるかに関係なく、動的に機能します。収集した「Name1」値を変数 @cols に割り当てます。この値は、@sqlquery 変数で PIVOT 句を動的に構築するために使用されます。その後、最後のクエリが実行され、目的の出力が生成されます。

追加リソース:

  • [ピボット データT-SQL](https://www.mssqltips.com/sqlservertip/1355/pivot-data-in-tsql/)
  • [SQL を使用して単一のテーブルに結合して概要を作成するにはどうすればよいですか?サーバー?](https://stackoverflow.com/questions/260660/how-do-i-build-a-summary-by-joining-to-a-single-table-with-sql-server)
  • [ダイナミックピボットとダイナミック列](https://stackoverflow.com/questions/8248059/pivot-with-dynamic-columns-in-sql-server-2005)

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

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