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

SQL多LEFT JOIN查询按Cliente字段GROUP BY分组求和实现客户报表

问题原因
  • 你当前查询中计算金额的Col2字段提前用FORMAT()函数转成了货币格式字符串,字符串类型无法直接做数值求和
  • 没有对Cliente字段添加分组聚合逻辑,因此返回的是所有匹配条件的明细行,而非客户维度的汇总行
修正方案

核心逻辑是先计算单条明细的数值型金额,按Cliente分组求和完成汇总后,最后再对汇总值做货币格式化,修正后的SQL如下:

SELECT  
 TAB_Aditivos.Cliente As Col1,
 -- 先对明细金额求和,最后再做货币格式转换
 FORMAT(
  SUM(
   TAB_Aditivos.Diferencial 
   + TAB_Aditivos.[Ad Valorem] 
   + IIF(ConsiderarJ = 0, TAB_Aditivos.[IOF Adicional], 0) 
   + IIF(ConsiderarJ = 0, TAB_Aditivos.IOF, 0) 
   + TAB_Aditivos.[Outros Créditos] 
   - TAB_Aditivos.[Outros Débitos] 
   + ISNULL(Juros,0)
  ),
 'C'
 ) As Col2
FROM TAB_Aditivos 
 LEFT JOIN (
  SELECT ID_Aditivo, SUM(Juros) AS Juros 
  FROM TAB_Aditivos_Devolvidos 
  GROUP BY ID_Aditivo
 ) TAB_Aditivos_Devolvidos ON TAB_Aditivos.ID_Aditivo = TAB_Aditivos_Devolvidos.ID_Aditivo 
 LEFT JOIN (
  SELECT ID, Considerar AS ConsiderarJ 
  FROM TAB_Lojas
 ) TAB_Lojas ON TAB_Aditivos.Loja = TAB_Lojas.ID
WHERE 
 TAB_Aditivos.[Data Aditivo] >= @DataInicial
-- 按客户字段分组
GROUP BY
 TAB_Aditivos.Cliente
ORDER BY 
 TAB_Aditivos.Cliente ASC
注意点
  • 不要在聚合前对数值做格式化转字符串操作,否则会导致求和逻辑失效,所有格式化操作都要放在聚合计算完成之后
  • 分组时SELECT子句里的非聚合字段,必须全部写在GROUP BY子句中,当前场景只需要按Cliente分组即可满足需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:51:28