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

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

DDD
发布: 2024-12-25 04:58:20
原创
396 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板