Este capítulo explica las funciones CASE y COALESCE de Teradata.
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.
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
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;
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.
COALESCE(expression 1, expression 2, ....)
SELECT EmployeeNo, COALESCE(dept_no, 'Department not found') FROM employee;
El operador NULLIF devuelve NULL si los argumentos son iguales.
A continuación se muestra la sintaxis del operador NULLIF.
NULLIF(expression 1, expression 2)
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
🚫