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