begin process at 2008 07 04 10:02:14
1 204 528 membres
70 nouveaux aujourd'hui
14 116 membres club

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

Participer à cet échange

Livres en rapport

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS