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



在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子句一起使用。

提前感谢

您只需要分母:中的nullif()

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

事实上,您不希望NULLIF()出现在分子中,因为这可能会返回真正应该是0NULL值。

最新更新