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中文网其他相关文章!