SQL Bedingte Ausgabe

29/12/2009 - 12:52 von Maja Meyers | Report spam
SQL 2008 Standard


Hallo NG,

Ich möchte in einer Spalte den Status eines Datensatzes zurückgeben.
Status = A (aktiv), wenn ZeitE=Null
Status = B (beendet), wenn ZeitE nicht Null und Unterbrochen = falsch
Status = U (unterbrochen), wenn ZeitE nicht Null und Unterbrochen = wahr

Was ich hinbekomme, ist ein Ergebnis mit einer Variablen (auch wenn mir
für den Test auf NULL nichts besseres einfàllt :

SELECT ZeitA, ZeitE, Unterbrochen,
CASE COALESCE (ZeitE, 0)
WHEN 0 THEN 'A'
ELSE 'B'
END AS Status
FROM dbo.MeineTabelle

Wie macht man das, wenn mehrere Variablen abgefragt werden sollen (hier
ZeitE und Unterbrochen), eine Verschachtelung des CASE ist wohl nicht
erlaubt ?

tia
Maja
 

Lesen sie die antworten

#1 Helmut Woess
29/12/2009 - 14:26 | Warnen spam
Am Tue, 29 Dec 2009 12:52:07 +0100 schrieb Maja Meyers:

SQL 2008 Standard


Hallo NG,

Ich möchte in einer Spalte den Status eines Datensatzes zurückgeben.
Status = A (aktiv), wenn ZeitE=Null
Status = B (beendet), wenn ZeitE nicht Null und Unterbrochen = falsch
Status = U (unterbrochen), wenn ZeitE nicht Null und Unterbrochen = wahr

Was ich hinbekomme, ist ein Ergebnis mit einer Variablen (auch wenn mir
für den Test auf NULL nichts besseres einfàllt :

SELECT ZeitA, ZeitE, Unterbrochen,
CASE COALESCE (ZeitE, 0)
WHEN 0 THEN 'A'
ELSE 'B'
END AS Status
FROM dbo.MeineTabelle

Wie macht man das, wenn mehrere Variablen abgefragt werden sollen (hier
ZeitE und Unterbrochen), eine Verschachtelung des CASE ist wohl nicht
erlaubt ?

tia
Maja



CASE kann man auch schachtel, kein Problem :-)
Aber in deinem Fall ginge es auch so:
SELECT ZeitA, ZeitE, Unterbrochen,
CASE
WHEN ZeitE is Null then 'A'
WHEN ZeitE is not Null and Unterbrochen = false THEN 'B'
WHEN ZeitE is not Null and Unterbrochen = true THEN 'U'
ELSE '?'
END AS Status
FROM dbo.MeineTabelle
... wobei die entsprechenden Werte für true/false einzusetzen sind.

bye,
Helmut

Ähnliche fragen