Teradata - CASE e COALESCE
Questo capitolo spiega le funzioni CASE e COALESCE di Teradata.
CASE Expression
L'espressione CASE valuta ogni riga rispetto a una condizione o alla clausola WHEN e restituisce il risultato della prima corrispondenza. Se non sono presenti corrispondenze, viene restituito il risultato della parte ELSE.
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
Considera la seguente tabella Employee.
EmployeeNo | Nome di battesimo | Cognome | JoinedDate | DepartmentNo | Data di nascita |
---|---|---|---|---|---|
101 | Mike | James | 27/3/2005 | 1 | 1/5/1980 |
102 | Roberto | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Peter | Paolo | 21/03/2007 | 2 | 4/1/1983 |
104 | Alex | Stuart | 2/1/2008 | 2 | 11/6/1984 |
105 | Roberto | James | 1/4/2008 | 3 | 12/1/1984 |
L'esempio seguente valuta la colonna DepartmentNo e restituisce il valore 1 se il numero di reparto è 1; restituisce 2 se il numero di reparto è 3; altrimenti restituisce il valore come reparto non valido.
SELECT
EmployeeNo,
CASE DepartmentNo
WHEN 1 THEN 'Admin'
WHEN 2 THEN 'IT'
ELSE 'Invalid Dept'
END AS Department
FROM Employee;
Quando la query precedente viene eseguita, 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 CASE di cui sopra 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 restituiscono 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. In caso contrario, restituisce il valore DepartmentNo.
SELECT
EmployeeNo,
NULLIF(DepartmentNo,3) AS department
FROM Employee;
La query precedente restituisce i seguenti record. Puoi vedere che il dipendente 105 ha il dipartimento n. 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