ピボット テーブルと列の連結
質問:
データベース テーブルを変換するにはどうすればよいですか?次の構造を持つ:
ID TYPE SUBTYPE COUNT MONTH 1 A Z 1 7/1/2008 1 A Z 3 7/1/2008 2 B C 2 7/2/2008 1 A Z 3 7/2/2008
into次の構造を持つテーブル:
ID A_Z B_C MONTH 1 4 0 7/1/2008 2 0 2 7/2/2008 1 0 3 7/2/2008
TYPE と SUBTYPE が連結されて新しい列 (例: "A_Z") が形成され、ID と MONTH の値が一致するかどうか COUNT が合計されます?
答え:
SQL Server 2005 が提供するもの質問で説明されている変換を可能にする PIVOT 演算子。詳細な説明は次のとおりです:
DECLARE @sql AS varchar(max); SET @sql = ' ;WITH p AS ( SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM(COUNT) AS [COUNT] FROM stackoverflow_159456 GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE ) SELECT ID, [MONTH], ' + @select_list + ' FROM p PIVOT ( SUM(COUNT) FOR PIVOT_CODE IN ( ' + @pivot_list + ' ) ) AS pvt ';
このソリューションは、動的 SQL を利用して、TYPE 値と SUBTYPE 値の一意の組み合わせに基づいて PIVOT クエリを構築し、データベース内の複数のタイプとサブタイプを処理するためのメンテナンス不要のアプローチを提供します。
以上がSQL Server でテーブルをピボットして列を連結する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。