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

分组查询中含CAST的SQL除零错误解决咨询

解决SQL分组时的除以零错误

你遇到的问题核心是:按年月分组后,部分分组的SUM([Total Cost])为0,触发了除以零的SQL错误——不分组时整体数据的总和不为0,所以没报错;但拆分到年月维度后,小分组里可能出现总成本总和为0的情况,这时候除法运算就会直接报错。

用NULLIF就能解决这个问题,下面是具体的修改方案:

基础解决(保留NULL值)

把分母的SUM([Total Cost])用NULLIF包裹,当总和为0时自动转为NULL,避免除以零的错误:

, CAST(ROUND(100.0 * SUM(CASE WHEN Status = 'PASS' then [Total Cost] END)             
/               
    NULLIF(SUM([Total Cost]), 0), 2) as DECIMAL(10,2)) 

进阶处理(替换NULL为默认值)

如果不想让结果显示NULL,想用默认值(比如0)替代,可以再加一层ISNULL:

, ISNULL(CAST(ROUND(100.0 * SUM(CASE WHEN Status = 'PASS' then [Total Cost] END)             
/               
    NULLIF(SUM([Total Cost]), 0), 2) as DECIMAL(10,2)), 0)

简单说明

  • NULLIF(a, b):如果a等于b,返回NULL,否则返回a。这里就是把总和为0的情况转为NULL,从根源避免除以零。
  • ISNULL(expr, default):如果expr是NULL,返回设置的默认值,否则返回expr本身,适合需要统一结果格式的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:09:56