Oracle中的CASE WHEN语句中的SUM

时间:2018-02-23 23:07:22

标签: oracle

我有这样的查询,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错误?

1 个答案:

答案 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,您可能会有更好的运气。