Teradata-CASE og COALESCE
dette kapitel forklarer Teradata ‘ s CASE og COALESCE funktioner.
CASE udtryk
CASE udtryk evaluerer hver række mod en betingelse eller når klausul og returnerer resultatet af den første kamp. Hvis der ikke er nogen kampe, returneres resultatet fra ellers en del af.
syntaks
Følgende er syntaksen for SAGSUDTRYKKET.
CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END
eksempel
overvej følgende Medarbejdertabel.
Medarbejderenej | Fornavn | Efternavn | Joineddato | Afdelingnej | Fødselsdato |
---|---|---|---|---|---|
101 | Mike | James | 3/27/2005 | 1 | 1/5/1980 |
102 | Robert | Vilhelm | 4/25/2007 | 2 | 3/5/1983 |
103 | Peter | Paul | 3/21/2007 | 2 | 4/1/1983 |
104 | Aleks | Stuart | 2/1/2008 | 2 | 11/6/1984 |
105 | Robert | James | 1/4/2008 | 3 | 12/1/1984 |
følgende eksempel evaluerer Afdelingskolonnen og returnerer værdien af 1, hvis afdelingsnummeret er 1; returnerer 2, hvis afdelingsnummeret er 3; ellers returnerer det værdien som ugyldig afdeling.
SELECT EmployeeNo, CASE DepartmentNo WHEN 1 THEN 'Admin' WHEN 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
når ovenstående forespørgsel udføres, producerer den følgende output.
*** 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
ovenstående CASE udtryk kan også skrives i følgende form, som vil producere det samme resultat som ovenfor.
SELECT EmployeeNo, CASE WHEN DepartmentNo = 1 THEN 'Admin' WHEN DepartmentNo = 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
COALESCE
COALESCE er en sætning, der returnerer den første ikke-null værdi af udtrykket. Det returnerer NULL, hvis alle argumenterne i udtrykket evalueres til NULL. Følgende er syntaksen.
syntaks
COALESCE(expression 1, expression 2, ....)
eksempel
SELECT EmployeeNo, COALESCE(dept_no, 'Department not found') FROM employee;
NULLIF
NULLIF-erklæring returnerer NULL, hvis argumenterne er ens.
syntaks
Følgende er syntaksen for NULLIF-erklæringen.
NULLIF(expression 1, expression 2)
eksempel
følgende eksempel returnerer NULL, hvis Afdelingennej er lig med 3. Ellers returnerer den Afdelingeningen værdi.
SELECT EmployeeNo, NULLIF(DepartmentNo,3) AS department FROM Employee;
ovenstående forespørgsel returnerer følgende poster. Du kan se, at medarbejder 105 har afdeling nr. som 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