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

如何对行数不同的两张表列求和?SQL求和结果异常求助

问题分析与解决

你的查询结果不符合预期,核心原因是LEFT JOIN导致Table1的行被重复匹配:

  • Table1中NO=1的行仅1条(VALUE1=1000),但Table2中NO=1的行有2条,连接后会生成2条数据:(1000,10)和(1000,20)
  • 此时SUM(VALUE1+VALUE2)实际计算的是(1000+10)+(1000+20)=2030,而非你期望的1000+(10+20)=1030

正确解法

方法1:先聚合Table2,再关联Table1

先对Table2按NO分组求和VALUE2,再和Table1连接,避免VALUE1被重复计算:

SELECT 
    t1.VALUE1 + COALESCE(t2.sum_value2, 0) AS TOTAL
FROM TABLE1 t1
LEFT JOIN (
    -- 先计算Table2每个NO对应的VALUE2总和
    SELECT NO, SUM(VALUE2) AS sum_value2
    FROM TABLE2
    GROUP BY NO
) t2 ON t2.NO = t1.NO

使用COALESCE是为了处理Table1存在但Table2无对应NO的情况,避免结果出现NULL。

方法2:分别求和后直接相加

如果不需要按NO分组(当前场景仅NO=1),可以直接对两张表分别求和再相加:

SELECT 
    (SELECT SUM(VALUE1) FROM TABLE1) + (SELECT SUM(VALUE2) FROM TABLE2) AS TOTAL

内容的提问来源于stack exchange,提问作者Farrasta Khoirunnas Saum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:29:58