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