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

SQL Server 2008:如何按RefNum、Year、CorrespVNum分组汇总行数据?

SQL Server 2008 多行重复记录汇总方案

直接使用GROUP BY结合聚合函数SUM()就能解决多行重复记录的汇总问题,不管重复行数是2行还是更多,这个方案都能生效:

SELECT
    RefNum,
    Year,
    CorrespVNum,
    SUM(Proceeds) AS TotalProceeds,
    SUM(BaseCost) AS TotalBaseCost
FROM
    你的数据表名
GROUP BY
    RefNum,
    Year,
    CorrespVNum;

说明

  • GROUP BY RefNum, Year, CorrespVNum会将这三个字段值完全相同的记录归为一组
  • SUM(Proceeds)和SUM(BaseCost)分别对每组内的对应字段求和,得到你需要的汇总值
  • 你之前用CTE失效,大概率是CTE里没有正确执行分组逻辑,或者只针对两行的场景写了特定处理逻辑,而GROUP BY是SQL处理分组汇总的标准方式,适配所有多行重复的情况

如果需要在汇总的同时保留原表的其他字段(比如需要查看每组内的原始记录详情),可以用CTE结合窗口函数SUM() OVER()来实现:

WITH CTE_Grouped AS (
    SELECT
        *,
        SUM(Proceeds) OVER(PARTITION BY RefNum, Year, CorrespVNum) AS TotalProceeds,
        SUM(BaseCost) OVER(PARTITION BY RefNum, Year, CorrespVNum) AS TotalBaseCost
    FROM
        你的数据表名
)
-- 如果需要去重显示唯一的汇总结果,添加DISTINCT
SELECT DISTINCT
    RefNum,
    Year,
    CorrespVNum,
    TotalProceeds,
    TotalBaseCost
FROM CTE_Grouped;

这个窗口函数的方式会给每条原始记录都添加上对应组的汇总值,如果只需要唯一的汇总结果,加上DISTINCT即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:40:38