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