Oracle中CASE WHEN语句中的SUM

Tpk43

我有这样的查询,O_ID数据类型为VARCHAR,f_units数据类型为Number

我在下面做了避免零除数错误的操作,当我这样做时我仍然收到错误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错误?

哨兵

在代码中,您正在检查when 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,可能会获得更好的运气。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章