我有一个查询,我需要得到一个数字除以2列中的2个字段。Oracle除以零的错误
shelve.total_qty /(GREATEST(NVL(y.FORECAST_QUANTITY,0),NVL(z.sales,0))/ 7)作为Shelve_DOC
我得到的臭名昭著错误。
ORA-01476:除数为零 01476. 00000 - “除数为零” *原因:
*操作:
我看过周围,我需要一个CASE/IF但我'不知道如何..
任何帮助,将不胜感激。
我有一个查询,我需要得到一个数字除以2列中的2个字段。Oracle除以零的错误
shelve.total_qty /(GREATEST(NVL(y.FORECAST_QUANTITY,0),NVL(z.sales,0))/ 7)作为Shelve_DOC
我得到的臭名昭著错误。
ORA-01476:除数为零 01476. 00000 - “除数为零” *原因:
*操作:
我看过周围,我需要一个CASE/IF但我'不知道如何..
任何帮助,将不胜感激。
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 ....
应该这样做。
这完美地工作! – Spartacus38
像这样的东西?
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
这工作也很完美!很高兴我可以选择两个答案。 – Spartacus38
有使用NULLIF 一种巧妙的方法 http://stackoverflow.com/questions/861778/how-to-avoid-the-divide-by-zero-error-in-sql – edgar