除以零时的Oracle错误

时间:2013-11-27 00:47:23

标签: sql oracle if-statement case

我有一个查询,我需要获得一个数字除以2列中的2个字段。

shelve.total_qty /(GREATEST(NVL(y.FORECAST_QUANTITY,0),NVL(z.sales,0))/ 7)为Shelve_DOC

我得到了臭名昭着的错误。

ORA-01476:除数等于零 01476. 00000 - “除数等于零” *原因:
*操作:

我已经阅读过我需要一个CASE / IF,但我不确定如何...

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

SELECT 
     CASE WHEN (GREATEST(NVL(y.FORECAST_QUANTITY, 0), NVL(z.sales, 0))/7) = 0 THEN null
          ELSE shelve.total_qty/(GREATEST(NVL(y.FORECAST_QUANTITY, 0), NVL(z.sales, 0))/7)
     END Shelve_DOC
  FROM ...
 WHERE ....

应该做的伎俩。

答案 1 :(得分:1)

这样的东西?

CASE WHEN NVL(y.FORECAST_QUANTITY,0) <= 0 AND NVL(z.sales,0) <= 0
     THEN NULL
     ELSE shelve.total_qty/(GREATEST(NVL(y.FORECAST_QUANTITY, 0), NVL(z.sales, 0))/7)
     END AS Shelve_DOC