2013-11-27 2 views
0

2 열의 2 개 필드로 나눈 값을 가져와야하는 쿼리가 있습니다.0으로 나누면 Oracle 오류가 발생합니다.

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

같은 난 악명 오류.

ORA-01476 : - :
* 작업 :

내가 필요한 주위 읽은 경우/IF하지만 제수 제로 01476. 00000 같다 * 원인 "제수가 0 같다" 모르겠다. ..

도움이 될 것입니다.

+0

NULLIF를 사용하여 깔끔한 방법이 http://stackoverflow.com/questions/861778/how-to-avoid-the-divide-by-zero-error-in-sql – edgar

답변

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 .... 

트릭을해야합니다.

+0

이 완벽하게 작동 ! – Spartacus38

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 
+0

이것은 완벽하게 작동했습니다! 다행히 두 가지 대답을 선택할 수 있습니다. – Spartacus38

관련 문제