Teradata – CASE and COALESCE
dit hoofdstuk legt de CASE-en COALESCEFUNCTIES van Teradata uit.
CASE Expression
CASE expression evalueert elke rij tegen een voorwaarde of wanneer clausule en geeft het resultaat van de eerste overeenkomst. Als er geen matches dan het resultaat van een ander deel van geretourneerd.
syntaxis
Hieronder volgt de syntaxis van de GEVALSUITDRUKKING.
CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END
voorbeeld
bekijk de volgende tabel voor werknemers.
EmployeeNo | Voornaam | Achternaam | JoinedDate | DepartmentNo | Geboortedatum |
---|---|---|---|---|---|
101 | Mike | James | 3/27/2005 | 1 | 1/5/1980 |
102 | Robert | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Peter | Paul | 3/21/2007 | 2 | 4/1/1983 |
104 | Alex | Stuart | 2/1/2008 | 2 | 11/6/1984 |
105 | Robert | James | 1/4/2008 | 3 | 12/1/1984 |
het volgende voorbeeld evalueert de kolom DepartmentNo en retourneert waarde 1 als het afdelingsnummer 1 is; retourneert 2 als het afdelingsnummer 3 is; anders retourneert het waarde als ongeldige afdeling.
SELECT EmployeeNo, CASE DepartmentNo WHEN 1 THEN 'Admin' WHEN 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
wanneer de bovenstaande query wordt uitgevoerd, produceert deze de volgende uitvoer.
*** 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
de bovenstaande GEVALUITDRUKKING kan ook in de volgende vorm worden geschreven, wat hetzelfde resultaat zal opleveren als hierboven.
SELECT EmployeeNo, CASE WHEN DepartmentNo = 1 THEN 'Admin' WHEN DepartmentNo = 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
COALESCE
COALESCE is een statement dat de eerste niet-nulwaarde van de uitdrukking retourneert. Het retourneert NULL als alle argumenten van de expressie evalueert naar NULL. Hieronder volgt de syntaxis.
syntaxis
COALESCE(expression 1, expression 2, ....)
voorbeeld
SELECT EmployeeNo, COALESCE(dept_no, 'Department not found') FROM employee;
NULLIF
NULLIF statement geeft NULL als de argumenten gelijk zijn.
syntaxis
Hieronder volgt de syntaxis van de NULLIF-verklaring.
NULLIF(expression 1, expression 2)
voorbeeld
het volgende voorbeeld geeft NULL terug als het Departementno gelijk is aan 3. Anders geeft het de Departementgeen waarde terug.
SELECT EmployeeNo, NULLIF(DepartmentNo,3) AS department FROM Employee;
de bovenstaande zoekopdracht geeft de volgende records terug. Je kunt zien dat werknemer 105 afdeling nr heeft. als nul.
*** 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