Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

CASE-Ausdruck mit COALESCE

Ein CASE-Ausdruck mit COALESCE hat folgende Syntax:


case_ausdruck ::= COALESCE ( ausdruck1 , ausdruck2 , ..., ausdruckn )



ausdruck

Ausdruck, dessen Auswertung einen alphanumerischen Wert, einen National-Wert, einen numerischen Wert oder einen Zeitwert ergibt.
Es darf kein multipler Wert mit Dimension > 1 sein.


Ergebnis


Das Ergebnis des CASE-Ausdrucks ist NULL, wenn alle in der Klammer enthaltenen Ausdrücke (ausdruck1... ausdruckn) NULL ergeben. Ergibt mindestens ein ausdruck einen anderen als den NULL-Wert, so ist das Ergebnis des CASE-Ausdrucks der Wert des ersten ausdruck, der nicht den NULL-Wert ergibt.

Der CASE-Ausdruck COALESCE (ausdruck1,ausdruck2) entspricht einem CASE-Ausdruck mit Suchbedingung der folgenden Form:

CASE 
   WHEN ausdruck1 IS NOT NULL THEN ausdruck1 
   ELSE ausdruck2 
END


Der CASE-Ausdruck COALESCE (ausdruck1,ausdruck2,...,ausdruckn) entspricht folgendem CASE-Ausdruck mit Suchbedingung:

CASE 
   WHEN ausdruck1 IS NOT NULL THEN ausdruck1 
   ELSE COALESCE (ausdruck2 ...,ausdruckn)
END


Beispiele


Eine Liste der Ansprechpartner soll für gezielte Kundenkontakte erstellt werden. Neben der Anrede, dem Nachnamen, der Telefonnummer und der Funktion soll entweder die Abteilung eines Kunden, oder, wenn diese nicht bekannt ist, zumindest der Anlass eines früheren Kontakts ermittelt werden.

SELECT anrede, nachname, kotelefon, funktion,

COALESCE(abteilung, koinfo) AS info FROM kontakt WHERE konr < 30


Ergebnistabelle

anrede

nachname

kotelefon

funktion

info

Herr Dr.

Kuehne

089/6361896

Vorstand

Personal

Herr

Walkers

089/63640182

Sekretaer

Vertrieb

Herr

Loetzerich

089/4488870

Geschaeftsfuehrer

Netzwerke

Herr

Schmidt

0551/123873

Schulung


Frau

Kredler

089/923764

Organisation

SQL-Kurs


Nach Anrede, Nachname, Telefonnummer und Funktion wird zunächst die Abteilung eines Kunden ermittelt. Fehlt diese Information (NULL-Wert), wird für INFO der Spaltenwert für die Spalte KOINFO ermittelt. Enthält sowohl die Spalte ABTEILUNG als auch die Spalte KOINFO den NULL-Wert, dann ergibt sich auch der NULL-Wert für INFO.


Aus der Tabelle AUFTRAG soll eine Liste mit Auftragsterminen erstellt werden. Die Liste soll das Datum der Auftragserteilung, die Bezeichnung des Auftrags und einen Fertigungstermin enthalten. Ist der tatsächliche Fertigungstermin nicht bekannt, soll statt dessen der Soll-Termin eingetragen werden.

SELECT adatum, atext, 
   COALESCE (fertigist, fertigsoll) AS termin FROM auftrag 
   adatum         atext                     termin
   <date>         Mitarbeiterschulung       <date>    
   <date>         Kunden-Verwaltung         <date>    
   <date>         Datenbank-Entwurf Kunden  <date>    
   <date>         Serienbrief-Einweisung    <date>    
   <date>         Kunden-Verwaltung         <date>    
   <date>         Netzwerk-Test/Vergleich
   <date>         Mitarbeiterschulung       <date>    


Um die Werte für TERMIN zu ermitteln, wird zunächst die Spalte FERTIGIST ausgewertet. Ist ein Datum als Spaltenwert vorhanden, wird dieses übernommen. Wo FERTIGIST den NULL-Wert enthält, wird der entsprechende Spaltenwert aus der Spalte FERTIGSOLL ermittelt und in die Spalte TERMIN eingetragen. Enthält sowohl FERTIGIST als auch FERTIGSOLL den NULL-Wert, dann wird in die Spalte TERMIN der NULL-Wert eingetragen.