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 contra una condición o cláusula WHEN y devuelve el resultado de la primera coincidencia. Si no hay coincidencias, el resultado de ELSE parte de devuelto.

Sintaxis

A continuación se muestra la sintaxis de la 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 Primer nombre Apellido JoinedDate Departamento No Fecha de nacimiento
101 Miguel James 27/03/2005 1 5/1/1980
102 Robert Williams 25/4/2007 2 05/03/1983
103 Pedro Pablo 21/03/2007 2 1/4/1983
104 Alex Stuart 1/2/2008 2 6/11/1984
105 Robert James 1/4/2008 3 1/12/1984

El siguiente ejemplo evalúa la columna DepartmentNo y devuelve el valor 1 si el número de departamento es 1; devuelve 2 si el número de departamento es 3; de lo contrario, devuelve un valor 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, produce 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 producirá 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;

JUNTARSE

COALESCE es una declaración que devuelve el primer valor no nulo de la expresión. Devuelve NULL si todos los argumentos de la expresión se evalúan como 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

La instrucción NULLIF devuelve NULL si los argumentos son iguales.

Sintaxis

A continuación se muestra la sintaxis de la declaración NULLIF.

NULLIF(expression 1, expression 2)

Ejemplo

El siguiente ejemplo devuelve NULL si DepartmentNo es igual a 3. De lo contrario, devuelve el valor DepartmentNo.

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

La consulta anterior devuelve los siguientes registros. Puede ver que el empleado 105 tiene el número de 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