首页 > 数据库 > mysql教程 > 如何在 SQL Server 中动态透视数据?

如何在 SQL Server 中动态透视数据?

DDD
发布: 2025-01-25 18:52:11
原创
211 人浏览过

How to Dynamically Pivot Data in SQL Server?

SQL Server动态透视查询

本文介绍如何将数据集从垂直格式转换为水平格式,以类别为列,日期为行。这通常使用PIVOT运算符来实现。

以下SQL代码在一个名为temp的临时表中初始化数据集。动态SQL用于构建PIVOT查询。@cols变量将不同的类别连接成逗号分隔的字符串。@query变量构建实际的PIVOT查询,按日期分组并根据类别进行透视。

<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT date, ' + @cols + ' from 
            (
                select date
                    , amount
                    , category
                from temp
           ) x
            pivot 
            (
                 max(amount)
                for category in (' + @cols + ')
            ) p '</code>
登录后复制

执行此查询将产生所需的结果:

<code>日期                        ABC         DEF    GHI
2012-01-01 00:00:00.000     1000.00     NULL    NULL
2012-02-01 00:00:00.000     NULL        500.00  800.00
2012-02-10 00:00:00.000     NULL        700.00  NULL
2012-03-01 00:00:00.000     1100.00     NULL    NULL</code>
登录后复制

这种动态方法允许根据需要调整类别,而无需更改查询结构。请记住在使用后删除临时表,以避免性能问题。

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

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