it-swarm.com.de

Können wir eine Case-Anweisung schreiben, ohne eine andere Anweisung zu haben

Ich habe diese Abfrage:

select case when id=1 then 'A'
when id=2 then 'B'
end 
from test

Es gibt mir o/p als

Ich würde
EIN
B
NULL
NULL
NULL

Ich möchte keine NULL-Werte in meiner Ausgabe haben, ich möchte nur in A und B vergleichen. 

6
Red Devil

Ein case-Ausdruck kann nur den Wert eines Ausdrucks bearbeiten und keine Zeilen aus dem Ergebnis entfernen. Wenn Sie die nulls aus dem Ergebnis auslassen möchten, müssen Sie eine where-Klausel hinzufügen:

SELECT CASE WHEN id = 1 THEN 'A'
            WHEN id = 2 THEN 'B'
       END 
FROM   test
WHERE  id IN (1, 2) -- HERE
6
Mureinik

Sie können eine WHERE-Klausel verwenden, um die Ausgabe einzuschränken.

SELECT CASE WHEN id=1 THEN 'A'
WHEN id=2 THEN 'B'
END 
FROM test
WHERE id IN (1,2)

Oder wenn Sie anstelle von null einen anderen Wert darstellen möchten, verwenden Sie einen else-Teil in der CASE-Anweisung.

SELECT CASE WHEN id=1 THEN 'A'
WHEN id=2 THEN 'B' ELSE 'Invalid'
END 
FROM test
1
Unnikrishnan R