使用 SQL Server Pivot 将行转换为列?
在 SQL Server 中,PIVOT 运算符是用于从行重新组织表格数据的强大工具到列。当您需要汇总给定列集的多行数据时,它特别有用。
为了说明这一点,请考虑下表:
| Name1 | Name2 | Value | |---|---|---| | A | P1 | 1 | | A | P2 | 1 | | A | P3 | 2 | | B | P1 | 3 | | B | P2 | 1 | | B | P4 | 1 |
假设我们要对此进行转换将数据转换为以下格式:
| | A | B | |---|---|---| | P1 | 1 | 4 | | P2 | 1 | 1 | | P3 | 2 | NULL | | P4 | NULL | 1 |
要实现此转换,我们可以利用 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 )
通过动态组装查询,此方法允许我们使用不同的列集来透视数据,从而提供灵活且可扩展的解决方案。
以上是SQL Server 的 PIVOT 运算符如何将行转置为列?的详细内容。更多信息请关注PHP中文网其他相关文章!