在 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 子句一起使用。
提前致谢
答案 0 :(得分:1)
您只需要分母中的nullif()
:
SUM(GW) * 100.0 / NULLIF(SUM(SUM(GW)) OVER (partition by ID, PPE), 0) as percentage
事实上,您不希望在 分子 中使用 NULLIF()
,因为这可能会返回 NULL
值,而这些值实际上应该是 0
。