- Probleme requete SQL - RETURN [RESOLU] - SQL/NoSQL - Programmation
Marsh Posté le 21-09-2007 à 15:13:44
1/ Si t'es sous Oracle, utilise DECODE() au lieu de CASE. Même si c'est pas standard, à moins de correctement indenter le case, c'est bien plus lisible
2/ Il suffit d'englober tout ton patakesse dans un CASE (ou DECODE) de plus haut niveau...
Marsh Posté le 21-09-2007 à 15:27:38
Yes merci pour cette réponse
Mais si je met par exemple :
DECODE((SUM((A.M_INT_CREANCIERS - NVL(E.M_INT_CREANCIERS,0))*(CASE WHEN A.C_REGLE_NB_JOURS = 3 THEN 365 ELSE 360 END))/ (SUM(A.C_NB_CREDIT - NVL(E.C_NB_CREDIT,0))),NULL,0)
Il va quand meme essayer de faire une division par 0
Ce qu il faudrai c'est que si SUM(A.C_NB_CREDIT - NVL(E.C_NB_CREDIT,0))) = 0 alors on sorte
Quelque chose comme CASE(SUM(A.C_NB_CREDIT - NVL(E.C_NB_CREDIT,0))) = 0 THEN RETURN 0 END
Marsh Posté le 21-09-2007 à 15:28:42
non
Code :
|
Marsh Posté le 21-09-2007 à 15:30:26
A ouais merci bien
Marsh Posté le 21-09-2007 à 15:10:49
Bonjour
J'ai un petit souci avec un champ que je dois calculer :
Voici le calcul pour mon champ :
(SUM((A.M_INT_CREANCIERS - NVL(E.M_INT_CREANCIERS,0))*(CASE WHEN A.C_REGLE_NB_JOURS = 3 THEN 365 ELSE 360 END))/ (SUM(A.C_NB_CREDIT - NVL(E.C_NB_CREDIT,0)))
la table avec l'alias A et celle du mois courant et celle avec E est du mois precedent. Le probleme vient du SUM(A.C_NB_CREDIT - NVL(E.C_NB_CREDIT,0)) qui est parfois à 0 dans ce cas la mon champ doit être à zéro.
J'ai pensé faire un IF SUM(A.C_NB_CREDIT - NVL(E.C_NB_CREDIT,0)= 0 RETURN
Je suis sous ORACLE et je suis un noob
Merci
Message édité par Swaks le 21-09-2007 à 15:43:57