首页 >数据库 >mysql教程 >如何使用 PIVOT 运算符在 SQL Server 中转置数据?

如何使用 PIVOT 运算符在 SQL Server 中转置数据?

DDD
DDD原创
2024-12-25 04:58:20398浏览

How to Transpose Data in SQL Server Using the PIVOT Operator?

如何使用 PIVOT 转置 SQL Server 数据

SQL Server 中的 PIVOT 运算符允许您将行转换为列,将数据从垂直方向的形式变为水平方向的形式。当寻求基于多个属性汇总数据时,这非常有用。

示例数据和所需输出

考虑以下起始数据集:

SELECT Name1, Name2, Value FROM mytable

Name1 | Name2 | Value
-------+-------+------
A      | P1     | 1
A      | P2     | 1
A      | P3     | 2
B      | P1     | 3
B      | P2     | 1
B      | P4     | 1

所需的输出是对数据进行透视,以便 PIVOT 运算符将 Name1 列值转换为列标题,并将来自Value 列由 Name2 列汇总。

在 SQL Server 2005 中使用 PIVOT 转置数据

对于 SQL Server 2005,可以按以下方式使用 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 )

此查询根据中的不同值动态生成 PIVOT 查询命名 1 列,组合列标题并相应地汇总数据。最终,结果是所需格式的转置数据:

P1      P2      P3      P4
-------+-------+-------+-------
1       1       2       NULL
3       1       NULL    1

以上是如何使用 PIVOT 运算符在 SQL Server 中转置数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn