1.Beispiel

Die Abfrage in diesem Beispiel bezieht sich im Gegensatz zum 2.Beispiel immer auf "GLEICHHEIT", somit kann der Syntax bei der Abfrage auf Gleichheit reduziert werden und ist somit einfacher zu lesen. Der Datentyp des Attributes und des im Case abgefragten Wertes sowie das Ergebnis müssen dem gleichen Datentyp entsprechen. Hinter dem "end" wird mit "as prstaff" die Überschrift der Spalte "PRSTAFF" definiert. Wird das "as prstaff" weggelassen so würde in der Spalte für "PRSTAFF" eine "2" stehen. In diesem Beispiel bleibt der Wert "12" erhalten.
 
select projno
, case prstaff
when 12
then 12
else 20
end as prstaff
from project;

Ergebnis 1.Beispiel
 
PROJNO PRSTAFF
AD3100 20
AD3110 20
AD3111 20
AD3112 20
AD3113 20
IF1000 20
IF2000 20
MA2100 12
MA2110 20
MA2111 20
MA2112 20
MA2113 20
OP1000 20
OP1010 20
OP2000 20
OP2010 20
OP2011 20
OP2012 20
OP2013 20
PL2100 20


2.Beispiel

Dieser Syntax wird verwendet, wenn der der CASE auf UNGLEICHHEIT abgefragt werden muss. Bei Gleichheit ist der Syntax im 1.Beispiel vorzuziehen. Der Datentyp des Attributes und des im CASE abgefragten Wertes sowie das Ergebnis müssen dem gleichen Datentyp entsprechen. Hinter dem "end" wird mit "as prstaff" die Überschrift der Spalte "PRSTAFF" definiert. Wird das "as prstaff" weggelassen so würde in der Spalte für "PRSTAFF" eine "2" stehen.
 
select projno
, case prstaff
when prstaff < 10
then 9
else 11
end as prstaff
from project;

Ergebnis 2.Beispiel
 
PROJNO PRSTAFF
AD31009
AD3110 9
AD3111 9
AD3112 9
AD3113 9
IF1000 9
IF2000 9
MA2100 11
MA2110 9
MA2111 9
MA2112 9
MA2113 9
OP1000 9
OP1010 9
OP2000 9
OP2010 9
OP2011 9
OP2012 9
OP2013 9
PL2100 9


3.Beispiel

Dieser Syntax wird verwendet, um über CASE Daten zu manipulieren und danach über den neu berechneten Wert eine Selektion durchzuführen. In der Ausgabe wird nicht der manipulierte Wert ausgegeben, sondern der tatsächliche Dateninhalt von prstaff. In diesem Bespiel bleibt der Wert "2" von prstaff unberücksichtigt,da auf diesen Datenwert nicht selektiert wird.
 
select projno
, projname
, prstaff
from project
where (case
when prstaff < 2 then (prstaff * 10)
when prstaff > 2 then (prstaff * 5.5)
end
) > 60

Ergebnis 3.Beispiel
 
PROJNO PROJNNAME PRSTAFF
     
MA2100 WELD LINE AUTOMATION 12,00


4.Beispiel

Dieser Syntax wird verwendet, um über CASE Daten zu manipulieren und danach über den neu berechneten Wert eine Selektion durchzuführen. In diesem Beispiel werden in dept nur die Werte 10 und 20 berücksichtigt. Neu berechnet wird das Attribut years, das Ergebnis wird als Selektionskriterium verwendet. Der komplette CASE wird auf Gleichheit abgefragt. In der Ausgabe werden keine manipulierten Werte angezeigt.
 
select *
from staff
where (case
when dept = 10 then (years * 4)
when dept = 20 then (years * 5)
end
) = 40

Ergebnis 4.Beispiel
 
ID NAME DEPT JOB YEARS SALARY COMM
20 Pernal 20 Sales 8 18171.25 612.45
190 Sneider 20 Clerk 8 14252.75 126.50
210 Lu 10 Mgr 10 20010.00  


5.Beispiel

In diesem CASE werden Character Datentypen, in Verbindung mit einem SUBSTRING, verglichen. Der Vergleich auf "job = Mgr" führt zu keinem Ergebnis. Es werden nur die Zeilen gefunden die im "job" den Wert "Clerk" enthalten. In der Ausgabe werden keine manipulierten Werte angezeigt.
 
select *
from staff
where (case
when job = 'Clerk' then substr(job,1,1)
when job = 'Mgr'   then substr(job,2,1)
end
) = 'C'

Ergebnis 5.Beispiel
 
ID NAME DEPT JOB YEARS SALARY COMM
80 James 20 Clerk   13504.60 128.20
110 Ngan 15 Clerk 5 12508.20 206.60
120 Naughton 38 Clerk   12954.75 180.00
130 Yamaguchi 42 Clerk 6 10505.90 75.60
170 Kermisch 15 Clerk 4 12258.50 110.10
180 Abrahams 38 Clerk 3 12009.75 236.50
190 Sneider 20 Clerk 8 14252.75 126.50
200 Scoutten 42 Clerk   11508.60 84.20
230 Lundquist 51 Clerk 3 13369.80 189.65
250 Wheeler 51 Clerk 6 14460.00 513.30
330 Burke 66 Clerk 1 10988.00 55.50
350 Gafney 84 Clerk 5 13030.50 188.00


6.Beispiel

In diesem CASE werden Character Datentypen, in Verbindung mit einem SUBSTRING, verglichen. In "when" wird auf "job" verglichen und nach dem then wird ein Vergleich auf "name" durchgeführt. In der Ausgabe werden keine manipulierten Werte angezeigt.
 
select *
from staff
where (case
when job = 'Clerk' then substr(name,4,1)
when job = 'Mgr'   then substr(name,2,1)
end
) = 'a'

Ergebnis 6.Beispiel
 
ID NAME DEPT JOB YEARS SALARY COMM
10 Sanders 20 Mgr 7 18357.50  
30 Marenghi 38 Mgr 5 17506.75  
50 Hanes 15 Mgr 10 20659.80  
130 Yamaguchi 42 Clerk 6 10505.90 75.60
180 Abrahams 38 Clerk 3 12009.75 236.50
240 Daniels 10 Mgr 5 19260.25