Teradata – CASE y COALESCE

Este capítulo explica las funciones CASE y COALESCE de Teradata.

Expresión CASE

La expresión CASE evalúa cada fila para una condición o cláusula WHEN y devuelve el resultado de la primera coincidencia. Si no hay coincidencia, el resultado se devuelve de la parte ELSE.

Sintaxis

A continuación se muestra la sintaxis de una expresión CASE.

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

ELSE  
   Result-n 
END

Ejemplo

Considere la siguiente tabla de empleados.

Numero de empleado. Nombre Apellido Fecha de Ingreso Departamento No Fecha de cumpleaños
101 Miguel James 27/03/2005 una 01/05/1980
102 Robert Williams 25/04/2007 2 05/03/1983
103 Pedro Paul 21/03/2007 2 01/04/1983
104 Alex Stewart 01/02/2008 2 06/11/1984
105 Robert James 04.01.2008 3 01/12/1984

El siguiente ejemplo evalúa la columna DepartmentNo y devuelve 1 si el número de departamento es 1; devuelve 2 si el número de departamento es 3; de lo contrario, vuelve como departamento no válido.

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

Cuando se ejecuta la consulta anterior, da el siguiente resultado.

*** 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

La expresión CASE anterior también se puede escribir en la siguiente forma, que dará el mismo resultado que el anterior.

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

RUEDA

COALESCE es una declaración que devuelve el primer valor distinto de cero de una expresión. Devuelve NULL si todos los argumentos de expresión son NULL. A continuación se muestra la sintaxis.

Sintaxis

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

Ejemplo

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

NULLIF

El operador NULLIF devuelve NULL si los argumentos son iguales.

Sintaxis

A continuación se muestra la sintaxis del operador NULLIF.

NULLIF(expression 1, expression 2) 

Ejemplo

El siguiente ejemplo devuelve NULL si DepartmentNo es 3. De lo contrario, devuelve DepartmentNo.

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

La consulta anterior devuelve los siguientes registros. Puede ver que el empleado 105 no tiene departamento. como 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

🚫