Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : CASE + IF error [ SQL Server, MSDE, SQL Express / Procédures Stockées ] (catzguy)
|
CASE + IF error
le 28/01/2008 17:04:29

catzguy
Membre Club 
|
 CatzGuy Voici une requete que je doit executer SELECT Time_Key , LigneCBRegroupement , CASE WHEN LigneCBRegroupement = 152 THEN BEGIN IF @TotalRC591 <= 0.00 BEGIN -1 * SUM(AmountEur) + ABS(@TotalRC591) END ELSE -1 * SUM(AmountEur) END WHEN LigneCBRegroupement = 137 THEN SUM(ABS(AmountEur)) WHEN LigneCBRegroupement = 164 THEN SUM(ABS(AmountEur)) WHEN LigneCBRegroupement = 165 THEN SUM(ABS(AmountEur)) ELSE SUM((AmountEur)) END AS Montant_Ligne_CB , ponderation , CASE WHEN LigneCBRegroupement = 152 THEN BEGIN IF @TotalRC591 <= 0.00 BEGIN
CONVERT(DECIMAL(19,2),((CONVERT(DECIMAL(19,2),ponderation)/100)*(-1 *
SUM(AmountEur) + ABS(@TotalRC591))) END ELSE CONVERT(DECIMAL(19,2),((CONVERT(DECIMAL(19,2),ponderation)/100)*( -1 * SUM((AmountEur))))) END
WHEN LigneCBRegroupement = 137 THEN
CONVERT(DECIMAL(19,2),((CONVERT(DECIMAL(19,2),ponderation)/100)*(
SUM(ABS(AmountEur))))) WHEN
LigneCBRegroupement = 164 THEN
CONVERT(DECIMAL(19,2),((CONVERT(DECIMAL(19,2),ponderation)/100)*(
SUM(ABS(AmountEur))))) WHEN
LigneCBRegroupement = 165 THEN
CONVERT(DECIMAL(19,2),((CONVERT(DECIMAL(19,2),ponderation)/100)*(
SUM(ABS(AmountEur))))) ELSE CONVERT(DECIMAL(19,2),((CONVERT(DECIMAL(19,2),ponderation)/100)*(SUM((AmountEur))))) END AS ResultatPondere , AS ResultatPondere ,*/ Ligne_Total FROM dbo.DATABASE WHERE dbo.DATABASE.Time_Key = @MaxTimeKey GROUP BY Time_Key , LigneCBRegroupement , ponderation , Ligne_Total ORDER BY Time_Key , LigneCBRegroupement
Le probleme se situe au nivieau de l'imbrication du CASE avec un IF Quelqu'un peut-il ne dire so cela m...    Merci
|
|
|
|
Re : CASE + IF error
le 29/01/2008 11:53:59

catzguy
Membre Club 
|
Pour info et ceux que cela peux interesser, il suffi à la place du IF de poser un second CASE imbriqué sur la condition seconde ex: CASE WHEN LigneCBRegroupement = 152 THEN CASE WHEN @TotalRC591 <= 0.00 THEN -1 * SUM(AmountEur) + ABS(@TotalRC591) ELSE -1 * SUM(AmountEur) END WHEN LigneCBRegroupement = 137 THEN SUM(ABS(AmountEur)) WHEN LigneCBRegroupement = 164 THEN SUM(ABS(AmountEur)) WHEN LigneCBRegroupement = 165 THEN SUM(ABS(AmountEur)) ELSE SUM((AmountEur)) END AS Montant_Ligne_CB , CatzGuy
|
|
|
Classé sous : decimal, sum, convert, amounteur, lignecbregroupement
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | | | |
|
|