SQL を使用した列の連結とデータのピボット
問題:
次のようなデータベースがあります。 ID、タイプ、サブタイプ、数、月を表す列。このデータを、タイプとサブタイプが新しい列に連結され、ID と月の一意の組み合わせごとにカウントが合計される新しい形式に変換するにはどうすればよいですか?
解決策:
この変換された出力を実現するには、SQL Server 2005 の PIVOT 演算子を利用できます。PIVOT 演算子を使用すると、行を動的に転置できます。
次のコード スニペットは、PIVOT を使用して目的の結果を達成する方法を示しています。
DECLARE @sql AS varchar(max) DECLARE @pivot_list AS varchar(max) -- Leave NULL for COALESCE technique DECLARE @select_list AS varchar(max) -- Leave NULL for COALESCE technique SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + PIVOT_CODE + ']' ,@select_list = COALESCE(@select_list + ', ', '') + 'ISNULL([' + PIVOT_CODE + '], 0) AS [' + PIVOT_CODE + ']' FROM ( SELECT DISTINCT [TYPE] + '_' + SUBTYPE AS PIVOT_CODE FROM stackoverflow_159456 ) AS PIVOT_CODES 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 ' EXEC (@sql)
実装の詳細:
@sql 変数を実行すると、連結された列と合計カウントを含む目的のテーブルが返されます。このソリューションにより、複雑なデータの効率的かつ動的な集約が可能になります。
以上がSQL を使用して列を連結し、データをピボットし、一意の ID と月の組み合わせの合計数をどのように使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。