Teradata – FALL und VERSCHMELZEN
In diesem Kapitel werden die CASE- und COALESCE-Funktionen von Teradata erläutert.
CASE Expression
CASE expression wertet jede Zeile anhand einer Bedingung oder WHEN-Klausel aus und gibt das Ergebnis der ersten Übereinstimmung zurück. Wenn es keine Übereinstimmungen gibt, wird das Ergebnis von ELSE part of zurückgegeben.
Syntax
Es folgt die Syntax des CASE-Ausdrucks.
CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END
Beispiel
Betrachten Sie die folgende Mitarbeitertabelle.
Mitarbeiternein | Vorname | Nachname | Beitrittsdatum | Abteilungnein | Geburtsdatum |
---|---|---|---|---|---|
101 | Mike | James | 3/27/2005 | 1 | 1/5/1980 |
102 | Robert | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Petrus | Paulus | 3/21/2007 | 2 | 4/1/1983 |
104 | Alex | Stuart | 2/1/2008 | 2 | 11/6/1984 |
105 | Robert | Jakobus | 1/4/2008 | 3 | 12/1/1984 |
Das folgende Beispiel wertet die Spalte DepartmentNo aus und gibt den Wert 1 zurück, wenn die Abteilungsnummer 1 ist; gibt 2 zurück, wenn die Abteilungsnummer 3 ist; Andernfalls wird der Wert als ungültige Abteilung zurückgegeben.
SELECT EmployeeNo, CASE DepartmentNo WHEN 1 THEN 'Admin' WHEN 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
Wenn die obige Abfrage ausgeführt wird, erzeugt sie die folgende Ausgabe.
*** Query completed. 5 rows found. 2 columns returned. *** Total elapsed time was 1 second. EmployeeNo Department ----------- ------------ 101 Admin 104 IT 102 IT 105 Invalid Dept 103 IT
Der obige Fallausdruck kann auch in der folgenden Form geschrieben werden, die das gleiche Ergebnis wie oben ergibt.
SELECT EmployeeNo, CASE WHEN DepartmentNo = 1 THEN 'Admin' WHEN DepartmentNo = 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
COALESCE
COALESCE ist eine Anweisung, die den ersten Wert ungleich Null des Ausdrucks zurückgibt. Es gibt NULL zurück, wenn alle Argumente des Ausdrucks NULL ergeben. Es folgt die Syntax.
Syntax
COALESCE(expression 1, expression 2, ....)
Beispiel
SELECT EmployeeNo, COALESCE(dept_no, 'Department not found') FROM employee;
NULLIF
NULLIF-Anweisung gibt NULL zurück, wenn die Argumente gleich sind.
Syntax
Es folgt die Syntax der NULLIF-Anweisung.
NULLIF(expression 1, expression 2)
Beispiel
Das folgende Beispiel gibt NULL zurück, wenn DepartmentNo gleich 3 ist. Andernfalls wird der Wert DepartmentNo zurückgegeben.
SELECT EmployeeNo, NULLIF(DepartmentNo,3) AS department FROM Employee;
Die obige Abfrage gibt die folgenden Datensätze zurück. Sie können sehen, dass Mitarbeiter 105 die Abteilungs-Nr. als NULL.
*** Query completed. 5 rows found. 2 columns returned. *** Total elapsed time was 1 second. EmployeeNo department ----------- ------------------ 101 1 104 2 102 2 105 ? 103 2