Mehrere, wenn sie innerhalb no-Ausdruck CASE in SQL?
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?
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)