Teradata - CASE et COALESCE

Ce chapitre explique les fonctions CASE et COALESCE de Teradata.

Expression CASE

L'expression CASE évalue chaque ligne par rapport à une condition ou à une clause WHEN et renvoie le résultat de la première correspondance. S'il n'y a pas de correspondance, le résultat de la partie ELSE est renvoyé.

Syntaxe

Voici la syntaxe de l'expression CASE.

CASE <expression> 
WHEN <expression> THEN result-1 
WHEN <expression> THEN result-2 

ELSE  
   Result-n 
END

Exemple

Considérez le tableau des employés suivant.

Numéro d'employé Prénom Nom de famille JoinedDate DépartementNon Date de naissance
101 Mike James 27/03/2005 1 05/01/1980
102 Robert Williams 25/04/2007 2 05/03/1983
103 Peter Paul 21/03/2007 2 01/04/1983
104 Alex Stuart 2/1/2008 2 06/11/1984
105 Robert James 1/4/2008 3 01/12/1984

L'exemple suivant évalue la colonne DepartmentNo et renvoie la valeur 1 si le numéro de service est 1; renvoie 2 si le numéro de département est 3; sinon, il renvoie la valeur en tant que département non valide.

SELECT 
   EmployeeNo, 
CASE DepartmentNo 
   WHEN 1 THEN 'Admin' 
   WHEN 2 THEN 'IT' 
ELSE 'Invalid Dept'
   END AS Department 
FROM Employee;

Lorsque la requête ci-dessus est exécutée, elle produit la sortie suivante.

*** 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'expression CASE ci-dessus peut également être écrite sous la forme suivante qui produira le même résultat que ci-dessus.

SELECT 
   EmployeeNo, 
CASE  
   WHEN DepartmentNo = 1 THEN 'Admin' 
   WHEN  DepartmentNo = 2 THEN 'IT' 
ELSE 'Invalid Dept' 
   END AS Department  
FROM Employee;

SE FONDRE

COALESCE est une instruction qui renvoie la première valeur non nulle de l'expression. Il renvoie NULL si tous les arguments de l'expression sont évalués à NULL. Voici la syntaxe.

Syntaxe

COALESCE(expression 1, expression 2, ....)

Exemple

SELECT 
   EmployeeNo, 
   COALESCE(dept_no, 'Department not found') 
FROM  
   employee;

NULLIF

L'instruction NULLIF renvoie NULL si les arguments sont égaux.

Syntaxe

Voici la syntaxe de l'instruction NULLIF.

NULLIF(expression 1, expression 2)

Exemple

L'exemple suivant renvoie NULL si DepartmentNo est égal à 3. Sinon, il renvoie la valeur DepartmentNo.

SELECT 
   EmployeeNo,  
   NULLIF(DepartmentNo,3) AS department 
FROM Employee;

La requête ci-dessus renvoie les enregistrements suivants. Vous pouvez voir que l'employé 105 a le département no. comme 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