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

如何修改SQL查询将多行计算结果合并为单一行总和?

解决SQL查询汇总问题

你的问题核心是需要将每行计算出的差值进行累加,得到一个总合,而不是返回每行单独的结果。原来的查询会对符合条件的每一行TranPOSHeader记录计算差值,所以返回了10和20两个结果;要得到总和30,只需要用SUM()聚合函数把整个计算表达式包裹起来即可。

修改后的查询语句

SELECT SUM(
    GrandTotal - RecPayAmount - 
    (SELECT COALESCE(SUM(detail.LineAmount), 0) 
     FROM TranPOSDetail as detail 
     WHERE detail.RefHeaderCode = TranPOSHeader.Code 
       AND EntryFlag = 4)
) AS TotalDifference
FROM TranPOSHeader 
WHERE VoucherTypeCode=2000 
  AND WalkInCustomerCode=200429 
  AND GrandTotal > RecPayAmount;

关键说明

  1. SUM() 聚合函数:把每行的计算结果累加起来,直接得到所有符合条件记录的差值总和。
  2. COALESCE() 函数:我额外加上了这个函数,用来处理当TranPOSHeader没有匹配的TranPOSDetail记录时的情况——此时子查询会返回NULL,用COALESCE(..., 0)可以把NULL转换成0,避免整个计算结果变成NULL,保证总和的准确性。

执行这个修改后的查询,就会直接返回你想要的结果:30。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:36:54