SQL Server 中的資料透視表和連接列
給定的SQL Server 資料庫包含具有ID、TYPE、SUBTYPE、COUNT 和MONTH 的記錄列。目標是將這些資料轉換為資料透視表,其中 TYPE 和 SUBTYPE 連接成新列,並對匹配的 ID 和 MONTH 值的 COUNT 進行求和。
為了實現此目的,SQL Server 提供了 PIVOT 運算符,該運算符會動態地根據提供的值產生列。以下是使用 PIVOT 解決此問題的方法:
DECLARE @sql AS VARCHAR(MAX); DECLARE @pivot_list AS VARCHAR(MAX); DECLARE @select_list AS VARCHAR(MAX); 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 TableName ) AS PIVOT_CODES; SET @sql = ';WITH p AS ( SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM([COUNT]) AS [COUNT] FROM TableName 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);
此程式碼動態產生所需的列清單並使用 PIVOT 運算子建立資料透視表。產生的輸出將具有所需的格式,其中包含連接的 TYPE 和 SUBTYPE 列以及求和的 COUNT 值。
以上是如何使用 PIVOT 運算子在 SQL Server 中透視和連接列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!