Teradata – CASE y COALESCE
Este capítulo explica el CASO y las funciones de FUSIÓN de Teradata.
Expresión de mayúsculas y minúsculas
La expresión de mayúsculas y minúsculas evalúa cada fila contra una condición o cláusula WHEN y devuelve el resultado de la primera coincidencia. Si no hay coincidencias, se devuelve el resultado de la parte ELSE.
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.
EmployeeNo | Nombre | Apellido | JoinedDate | DepartmentNo | Fecha De Nacimiento |
---|---|---|---|---|---|
101 | Mike | James | 3/27/2005 | 1 | 1/5/1980 |
102 | Robert | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Pedro | Pablo | 3/21/2007 | 2 | 4/1/1983 |
104 | Alex | Stuart | 2/1/2008 | 2 | 11/6/1984 |
105 | Robert | James | 1/4/2008 | 3 | 12/1/1984 |
El siguiente ejemplo evalúa la columna DepartmentNo y devuelve el valor de 1 si el número de departamento es 1; devuelve 2 si el número de departamento es 3; de lo contrario, devuelve el 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 la siguiente salida.
*** 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 de mayúsculas y minúsculas anterior también se puede escribir de la siguiente forma, lo 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;
COALESCE
COALESCE es una sentencia 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 instrucción NULLIF.
NULLIF(expression 1, expression 2)
Ejemplo
El siguiente ejemplo devuelve NULL si el 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. Puedes ver que el empleado 105 tiene el departamento no. 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