You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TSQL按id与type分组求和并转置为指定列的实现需求

TSQL实现分组求和并转置列

针对你的需求,我们可以通过分组求和结合条件聚合或者PIVOT运算符来实现,这里给你两种常用的方案:

方案一:使用条件聚合(灵活适配固定列场景)

这种方式直接通过CASE语句判断type值,对每个type对应的number求和,没有匹配的返回0:

SELECT 
    id,
    SUM(CASE WHEN type = 111 THEN number ELSE 0 END) AS type111,
    SUM(CASE WHEN type = 112 THEN number ELSE 0 END) AS type112,
    SUM(CASE WHEN type = 113 THEN number ELSE 0 END) AS type113
FROM Table1
GROUP BY id
ORDER BY id;

方案二:使用PIVOT运算符(简洁的转置语法)

先通过子查询对id和type分组求和,再用PIVOT将type值转成列,最后用ISNULL把空值替换为0:

SELECT 
    id,
    ISNULL([111], 0) AS type111,
    ISNULL([112], 0) AS type112,
    ISNULL([113], 0) AS type113
FROM (
    SELECT id, type, SUM(number) AS total_number
    FROM Table1
    GROUP BY id, type
) AS SourceTable
PIVOT (
    SUM(total_number)
    FOR type IN ([111], [112], [113])
) AS PivotTable
ORDER BY id;

补充说明

  • 两种方案都能输出你期望的结果:按id分组,每个type对应的求和值作为列,无数据的type列显示0。
  • 条件聚合的优势是后续调整列逻辑时,直接修改CASE语句即可,灵活性更高;PIVOT则语法更简洁,适合标准的转置场景。

内容的提问来源于stack exchange,提问作者Cem Altunsoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:12:48