我创建了以下查询
SELECT LPORGNAME
,SUM(TOTALNoOFTRANSFERS) as TOTAL
,SUM(TReads) AS TReads
,ISNULL(ROUND(ISNULL(SUM(TReads),0)/CAST(SUM(TOTALNoOFTRANSFERS)AS FLOAT)*100,2),0)
FROM T_SPID_TRANSFER_IVSO
WHERE DM_FISC_YEAR = '2014-15'
GROUP BY LPORGNAME, DM_FISC_YEAR
ORDER BY LPORGNAME, DM_FISC_YEAR
但是我遇到了零错误的分歧,因为你可以看到我试图尝试ISNULL方式,但这不起作用。我该如何解决这个问题?
编辑 TOTALNoOFTRANSFERS是一个不允许NULLS的SUM列,所以它总是为0
编辑找到一种避免所有0的简单方法。添加WHERE TOTALNoOFTRANSFERS> 0,全部避免所有0
答案 0 :(得分:1)
基本上你做
SUM(TReads) / SUM(TOTALNoOFTRANSFERS)*100
可以是例如
3 / 0
无法计算除以零。想想应该显示什么然后做一个例外。喜欢这个
case when SUM(TOTALNoOFTRANSFERS) = 0
then 0
else SUM(TReads) / SUM(TOTALNoOFTRANSFERS)*100
end