首页 > 数据库 > mysql教程 > 如何使用动态列动态透视 SQL Server 中的数据?

如何使用动态列动态透视 SQL Server 中的数据?

DDD
发布: 2024-12-31 11:47:10
原创
183 人浏览过

How to Dynamically Pivot Data in SQL Server with Dynamic Columns?

动态列的动态 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 子句。然后执行最终查询,生成所需的输出。

其他资源:

  • [在 T-SQL 中透视数据](https://www .mssqltips.com/sqlservertip/1355/pivot-data-in-tsql/)
  • [如何我通过使用 SQL Server 连接到单个表来构建摘要?](https://stackoverflow.com/questions/260660/how-do-i-build-a-summary-by-joining-to-a-single- table-with-sql-server)
  • [动态 PIVOT 与动态列](https://stackoverflow.com/questions/8248059/pivot-with-dynamic-columns-in-sql-server-2005)

以上是如何使用动态列动态透视 SQL Server 中的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

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