Comment éviter l'erreur DIVIDE BY ZERO dans une requête SQL
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
Pour un mois en particulier, recd_qty est égale à ZÉRO, à cause de qui je suis arriver erreur de division PAR ZÉRO.
Est-il un moyen pour éviter l'erreur de division PAR ZÉRO?
Je n'quelque manière que dans le mois en question est ignorée?
source d'informationauteur HanuAthena
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez ignorer de tels enregistrements, vous pouvez utiliser une sous-requête
Si vous souhaitez les conserver et de gérer la division par zéro problème, vous pouvez utiliser décoder ou cas
Avez-vous essayé d'utiliser
NULLIF()
?Oracle Doc
http://www.oracle-base.com/articles/9i/ANSIISOSQLSupport.php#NULLIFFunction
Un autre exemple
http://www.bennadel.com/blog/984-Using-NULLIF-To-Prevent-Divide-By-Zero-Errors-In-SQL.htm
Si vous remplacez votre division à l'aide de NULLIF pour définir une valeur NULL quand il n'y a diviser par zéro, une ISNULL pour remplacer le NUL avec un 0 - ou, en fait, quelle que soit la valeur que vous souhaitez.