使用窗函数 sum 时遇到除以零错误

时间:2021-05-14 23:09:59

标签: sql sql-server tsql

在 SQL Server 中运行以下查询时出现错误:

<块引用>

遇到除以零错误。

select ID, CID, PTYPE, GW,PPE
    , payPercentage = SUM(GW) * 100.0 / SUM(SUM(GW)) OVER (partition by ID, PPE)
from pw_part
where ID ='001014055'
group by ID,CID,PPE,PTYPE,GW

payPercentage=SUM(GW) * 100.0 / SUM(SUM(GW)) OVER (partition by ID, PPE) 导致错误

如果我将 SUM 改为

ISNULL (SUM(gross_wages) * 100.0 / NULLIF(SUM(SUM(gross_wages)),0),0) OVER (partition by ssn, pay_period_ending)) as pctg

我遇到以下错误

<块引用>

函数“ISNULL”不是有效的窗口函数,不能与 OVER 子句一起使用。

提前致谢

1 个答案:

答案 0 :(得分:1)

您只需要分母中的nullif()

SUM(GW) * 100.0 / NULLIF(SUM(SUM(GW)) OVER (partition by ID, PPE), 0) as percentage

事实上,您不希望在 分子 中使用 NULLIF(),因为这可能会返回 NULL 值,而这些值实际上应该是 0