Question

    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:

    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?

Était-ce utile?

La solution

Case prend la forme suivante

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

Modifier

Cela suppose votre aide d'autres SGBD Microsoft SQL Server peuvent être différents

Autres conseils

Oui, c'est très bien, mais je voudrais aligner le « quand » s verticalement et 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

La mise en forme peut-être juste un petit problème de démarquage, mais le (select...) dans votre exemple compliqué ce que devrait être un extrait plus simple.

    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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top