2009-02-24 7 views
3
DECLARE @TestVal int 
SET @TestVal = 5 

SELECT 
    CASE 
     WHEN @TestVal <=3 THEN 'Top 3' 
     ELSE 'Other' 
    END 

J'ai vu cet exemple de code en ligne, mais je ne pouvais pas trouver un exemple où il n'y avait pas d'expression et il y avait plus d'un quand, alors je me demande si ce genre de chose est OK:Multiple QUAND à l'intérieur de la non-expression CASE dans SQL?

DECLARE @TestVal int 
SET @TestVal = 5 

SELECT 
    CASE 
     WHEN @TestVal <=3 THEN 'Top 3' 
       WHEN (select ...) = 1 THEN 'Other Value' 
       WHEN (select ...) = 2 THEN 'Other Value 2' 
     ELSE 'Other' 
    END 

Ou dois-je dire CASE WHEN pour chaque ligne?

Répondre

5

Case prend la forme suivante

CASE WHEN Condition THEN Result 
    WHEN Condition2 THEN Result2 
ELSE Default 
END 

Modifier

Cela suppose que votre utilise Microsoft SQL Server autre SGBD peut être différent

7

Oui, c'est très bien, mais je voudrais aligner le « QUAND "s verticalement et l'expliquer plus comme ceci:

SELECT 
    CASE 
     WHEN @TestVal <=3 THEN 'Top 3' 
     WHEN @TestVal <=10 THEN 'Top 10' 
     WHEN @TestVAl <=25 THEN 'Top 25' 
     ELSE 'Other' 
    END 

Le formatage peut être simplement un problème de démarque, mais le (select...) dans votre exemple a compliqué ce qui devrait être un extrait plus simple.

0
SELECT 
     CASE 
      WHEN @TestVal <=3 THEN 'Top 3' 
      WHEN @TestVal <=10 THEN 'Top 10' 
      WHEN @TestVAl <=25 THEN 'Top 25' 
      ELSE 'Other' 
     END 

En ce qui concerne les déclarations de cas de nidification, cela peut se faire aussi bien (jusqu'à 10 déclarations de cas imbriqués autorisés dans sql)

http://msdn.microsoft.com/en-us/library/ms181765.aspx

Questions connexes