在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()
出现在分子中,因为这可能会返回真正应该是0
的NULL
值。