Frage

    DECLARE @TestVal int
SET @TestVal = 5

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

habe ich diesen Beispielcode online, aber ich konnte nicht ein Beispiel finden, wo es keinen Ausdruck war und es hatte mehr als eine WHEN, so frage ich mich, ob diese Art der Sache ist 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

Oder muss ich CASE sagen, wenn für jede Zeile?

War es hilfreich?

Lösung

Fall das folgende Formular nimmt

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

Bearbeiten

Dies setzt voraus, Ihre Verwendung von Microsoft SQL Server andere DBMS könnte anders sein

Andere Tipps

Ja, das ist in Ordnung, aber ich würde es das „wenn“ s vertikal in einer Reihe aufstellen und erklären mehr wie folgt aus:

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

Die Formatierung könnte nur ein Abschlag Glitch sein, aber der (select...) in Ihrem Beispiel komplizierte, was sollte ein einfacher Schnipsel sein.

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

In Bezug auf die Verschachtelung Case-Anweisungen können dies auch getan werden (bis 10 verschachtelten case-Anweisungen in SQL erlaubt)

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top