Teradata-CASE și COALESCE
acest capitol explică cazul și fuzionează funcțiile Teradata.
expresie de caz
expresie de caz evaluează fiecare rând în raport cu o condiție sau când clauză și returnează rezultatul primului meci. Dacă nu există meciuri, atunci rezultatul din altă parte a revenit.
sintaxă
următoarea este sintaxa expresiei de caz.
CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END
exemplu
luați în considerare următorul tabel de angajați.
Angajatnu | Prenume | Prenume | Joinedate | Departamentnu | Data Nasterii |
---|---|---|---|---|---|
101 | Mike | James | 3/27/2005 | 1 | 1/5/1980 |
102 | Robert | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Petru | Pavel | 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 |
următorul exemplu evaluează coloana DepartmentNo și returnează valoarea 1 dacă numărul departamentului este 1; returnează 2 dacă numărul departamentului este 3; în caz contrar, returnează valoarea ca departament nevalid.
SELECT EmployeeNo, CASE DepartmentNo WHEN 1 THEN 'Admin' WHEN 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
când interogarea de mai sus este executată, aceasta produce următoarea ieșire.
*** 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
expresia cazului de mai sus poate fi scrisă și în următoarea formă, care va produce același rezultat ca mai sus.
SELECT EmployeeNo, CASE WHEN DepartmentNo = 1 THEN 'Admin' WHEN DepartmentNo = 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
COALESCE
COALESCE este o afirmație care returnează prima valoare non-nulă a expresiei. Returnează NULL dacă toate argumentele expresiei se evaluează la NULL. În urma este sintaxa.
sintaxă
COALESCE(expression 1, expression 2, ....)
exemplu
SELECT EmployeeNo, COALESCE(dept_no, 'Department not found') FROM employee;
nullif
declarația nullif returnează NULL dacă argumentele sunt egale.
sintaxă
următoarea este sintaxa instrucțiunii NULLIF.
NULLIF(expression 1, expression 2)
exemplu
următorul exemplu returnează NULL dacă DepartmentNo este egal cu 3. În caz contrar, returnează Departamentulnici o valoare.
SELECT EmployeeNo, NULLIF(DepartmentNo,3) AS department FROM Employee;
interogarea de mai sus returnează următoarele înregistrări. Puteți vedea că angajatul 105 are Departamentul nr. ca 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