動的列用の動的 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 句を動的に構築するために使用されます。その後、最後のクエリが実行され、目的の出力が生成されます。
追加リソース:
以上がSQL Server で動的列を使用してデータを動的にピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。