繁体   English   中英

使用 window function 时遇到除以零错误

[英]Divide by zero error encountered when using window function sum

在 SQL 服务器中运行以下查询时,出现错误:

遇到除以零错误。

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

我面临以下错误

function 'ISNULL' 不是有效的窗口 function,不能与 OVER 子句一起使用。

提前致谢

您只需要nullif()分母中:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM