Wie vermeiden Sie die Division DURCH NULL Fehler in einer SQL-Abfrage
SELECT YEAR, period, round((1- sum(rej_qty) / sum(recd_qty))*100, 0)
FROM TAB_A
WHERE sid = '200'
AND sdid IN ('4750')
AND
(
(
YEAR ='2011'
AND period IN('01_JAN')
)
OR
(
YEAR = '2010'
AND period IN('02_FEB','03_MAR','04_APR','05_MAY','06_JUN','07_JUL','08_AUG','09_SEP','10_OCT','11_NOV','12_DEC')
)
)
group by year, period
Für einen bestimmten Monat, recd_qty ist NULL, weil von denen bin ich immer der Division DURCH NULL Fehler.
Gibt es eine Möglichkeit zu vermeiden, Division DURCH NULL Fehler???
Ich irgend wo in einem bestimmten Monat, wird ignoriert?
InformationsquelleAutor der Frage jai | 2011-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, ignorieren Sie solche Aufzeichnungen können Sie eine Unterabfrage verwenden,
Wenn Sie wollen, um Sie und Griff die division durch null Problem können Sie mit decode oder case
InformationsquelleAutor der Antwort vc 74
Haben Sie versucht, mit
NULLIF()
?Oracle Doc
http://www.oracle-base.com/articles/9i/ANSIISOSQLSupport.php#NULLIFFunction
Weiteres Beispiel
http://www.bennadel.com/blog/984-Using-NULLIF-To-Prevent-Divide-By-Zero-Errors-In-SQL.htm
InformationsquelleAutor der Antwort Kenny Cason
Wenn Sie ersetzen Ihre division mit NULLIF zu setzen, eine NULL, wenn es eine Division durch null, dann eine ISNULL ersetzen Sie die NULL mit einem 0 - oder in der Tat was Wert, den Sie wollen.
InformationsquelleAutor der Antwort diagonalbatman