我有这样的查询,O_ID数据类型是VARCHAR,f_units数据类型是数字
我在下面做了以避免零除错的除数,当我这样做时,我仍然得到错误 ORA-01476:除数等于零当我在语句加上整个案例的总和然后它功能太深了。
select O_ID,SUM(F_UNITS),
CASE WHEN SUM(F_UNITS) <> 0 THEN sum(cast(f_units as float)) / sum(cast(sum(f_units ) as float)) over (partition by O_ID) ELSE 0 END
from myfacttable
如何在此场景中处理除数0错误?
答案 0 :(得分:0)
在您的代码中,您要检查SUM(F_UNITS) <> 0
的时间,但是除以sum(cast(sum(f_units ) as float)) over (partition by O_ID)
这是一个完全不同的值。
将条件条款更改为sum(cast(sum(f_units ) as float)) over (partition by O_ID) <> 0
,您可能会有更好的运气。