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