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

如何在SQL中对多查询结果分组并合并相同ID的数值求和

解决UNION合并后相同ID的Value求和问题

你的问题出在两个核心点:

  • 外层查询仅按id分组,但未对value执行求和聚合操作
  • 使用UNION会自动过滤重复行(但这里同一ID的value数值不同,所以不会被过滤,导致同一ID出现多条记录)

修改方案如下:

  1. 将UNION替换为UNION ALL:保留两个子查询返回的所有行,避免丢失需要参与求和的记录
  2. 外层查询对v.value使用SUM()聚合函数,配合GROUP BY v.id实现同一ID下所有value的求和

修改后的完整SQL脚本:

select v.id, sum(v.value) as total_value
from (
    SELECT  h.slxact# as id, (sum(nvl(d.DSCNT_AMT,0)) + sum(nvl(d.PYMT_AMT,0))) as value  
    FROM  pymnt d, invoice h
    WHERE  d.slxact# = h.slxact#
      and d.branch_cd = h.branch_cd
    group by h.slxact#

    UNION ALL 

    SELECT  h.slxact# as id, sum(nvl(d.PYMT_AMT,0)) as value   
    FROM   retn d, invoice h
    WHERE  d.slxact# = h.slxact#
      and d.branch_cd = h.branch_cd
    group by h.slxact#
) as v
group by v.id

执行后,ID为1的记录会合并为一行,total_value为11;ID为2的total_value保持7不变,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:32:13