[RESOLU] - Probleme requete SQL - RETURN

- Probleme requete SQL - RETURN [RESOLU] - SQL/NoSQL - Programmation

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
Reply

Marsh Posté le 21-09-2007 à 15:10:49   

Reply

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

Reply

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


Message édité par Swaks le 21-09-2007 à 15:29:06
Reply

Marsh Posté le 21-09-2007 à 15:28:42    

non
 

Code :
  1. decode(SUM(A.C_NB_CREDIT - NVL(E.C_NB_CREDIT,0))), 0, 0, (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))))


 
:o

Reply

Marsh Posté le 21-09-2007 à 15:30:26    

A ouais merci bien  :bounce:


Message édité par Swaks le 21-09-2007 à 15:30:49
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed