首页 > 数据库 > mysql教程 > 如何在 SQL Server 中透视表并连接列?

如何在 SQL Server 中透视表并连接列?

Mary-Kate Olsen
发布: 2025-01-02 17:04:40
原创
759 人浏览过

How to Pivot a Table and Concatenate Columns in SQL Server?

数据透视表和列串联

问题:

如何转换数据库表具有以下结构:

ID    TYPE   SUBTYPE    COUNT   MONTH
 1      A      Z          1       7/1/2008
 1      A      Z          3       7/1/2008
 2      B      C          2       7/2/2008
 1      A      Z          3       7/2/2008
登录后复制

进入具有以下结构的表:

ID    A_Z   B_C   MONTH
1     4     0     7/1/2008
2     0     2     7/2/2008
1     0     3     7/2/2008
登录后复制

其中 TYPE 和 SUBTYPE 连接形成新列(例如“A_Z”),并且对 COUNT 进行求和以匹配 ID 和 MONTH 值?

答案:

SQL Server 2005 提供了PIVOT 运算符可实现问题中描述的转换。以下是详细说明:

  1. 生成枢轴代码:确定 TYPE 和 SUBTYPE 值的不同组合。例如,['A_Z'].
  2. 构造动态 SQL: 使用动态 SQL 生成包含 PIVOT 运算符的查询。
DECLARE @sql AS varchar(max);
SET @sql = '
;WITH p AS (
    SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM(COUNT) AS [COUNT]
    FROM stackoverflow_159456
    GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE
)
SELECT ID, [MONTH], ' + @select_list + '
FROM p
PIVOT (
    SUM(COUNT)
    FOR PIVOT_CODE IN (
        ' + @pivot_list + '
    )
) AS pvt
';
登录后复制
  1. 执行动态SQL:执行生成的SQL查询以获得所需的

此解决方案利用动态 SQL 基于 TYPE 和 SUBTYPE 值的唯一组合构建 PIVOT 查询,提供了一种免维护的方法来处理数据库中的多种类型和子类型。

以上是如何在 SQL Server 中透视表并连接列?的详细内容。更多信息请关注PHP中文网其他相关文章!

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