Teradata-CASE and COALESCE
Questo capitolo spiega le funzioni CASE e COALESCE di Teradata.
Espressione CASO
Espressione CASO valuta ogni riga rispetto a una condizione o clausola WHEN e restituisce il risultato della prima corrispondenza. Se non ci sono corrispondenze, il risultato viene restituito da un’altra parte.
Sintassi
Di seguito è riportata la sintassi dell’espressione CASE.
CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END
Esempio
Si consideri la seguente tabella Employee.
EmployeeNo | Nome | Cognome | JoinedDate | DepartmentNo | Data Di Nascita |
---|---|---|---|---|---|
101 | Mike | Giacomo | 3/27/2005 | 1 | 1/5/1980 |
102 | Robert | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Pietro | Paolo | 3/21/2007 | 2 | 4/1/1983 |
104 | Alex | Stuart | 2/1/2008 | 2 | 11/6/1984 |
105 | Robert | Giacomo | 1/4/2008 | 3 | 12/1/1984 |
L’esempio seguente restituisce il DepartmentNo colonna e restituisce il valore 1 se il reparto è il numero 1; restituisce 2 se il numero di reparto a 3; in caso contrario, restituisce valore non valido dipartimento.
SELECT EmployeeNo, CASE DepartmentNo WHEN 1 THEN 'Admin' WHEN 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
Quando viene eseguita la query di cui sopra, produce il seguente 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
L’espressione del CASO precedente può anche essere scritta nella seguente forma che produrrà lo stesso risultato di cui sopra.
SELECT EmployeeNo, CASE WHEN DepartmentNo = 1 THEN 'Admin' WHEN DepartmentNo = 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
COALESCE
COALESCE è un’istruzione che restituisce il primo valore non nullo dell’espressione. Restituisce NULL se tutti gli argomenti dell’espressione valutano NULL. Di seguito è riportata la sintassi.
Sintassi
COALESCE(expression 1, expression 2, ....)
Esempio
SELECT EmployeeNo, COALESCE(dept_no, 'Department not found') FROM employee;
NULLIF
L’istruzione NULLIF restituisce NULL se gli argomenti sono uguali.
Sintassi
Di seguito è riportata la sintassi dell’istruzione NULLIF.
NULLIF(expression 1, expression 2)
Esempio
L’esempio seguente restituisce NULL se DepartmentNo è uguale a 3. Altrimenti, restituisce il valore DepartmentNo.
SELECT EmployeeNo, NULLIF(DepartmentNo,3) AS department FROM Employee;
La query di cui sopra restituisce i seguenti record. Si può vedere che dipendente 105 ha reparto no. come 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