”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何使用 PIVOT 运算符在 SQL Server 中转置数据?

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

发布于2024-12-23
浏览:241

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 )

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

P1      P2      P3      P4
------- ------- ------- -------
1       1       2       NULL
3       1       NULL    1
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3