Teradata - Operadores SET
Los operadores SET combinan los resultados de varias sentencias SELECT. Esto puede parecer similar a Joins, pero joins combina columnas de varias tablas, mientras que los operadores SET combinan filas de varias filas.
Reglas
El número de columnas de cada instrucción SELECT debe ser el mismo.
Los tipos de datos de cada SELECT deben ser compatibles.
ORDER BY debe incluirse solo en la declaración SELECT final.
UNIÓN
La declaración UNION se utiliza para combinar resultados de varias declaraciones SELECT. Ignora los duplicados.
Sintaxis
A continuación se muestra la sintaxis básica de la declaración UNION.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
UNION
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Ejemplo
Considere la siguiente tabla de empleados y salario.
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 |
Numero de empleado | Bruto | Deducción | Salario neto |
---|---|---|---|
101 | 40.000 | 4000 | 36.000 |
102 | 80.000 | 6.000 | 74.000 |
103 | 90.000 | 7.000 | 83.000 |
104 | 75.000 | 5,000 | 70.000 |
La siguiente consulta UNION combina el valor EmployeeNo de la tabla Employee y Salario.
SELECT EmployeeNo
FROM
Employee
UNION
SELECT EmployeeNo
FROM
Salary;
Cuando se ejecuta la consulta, produce el siguiente resultado.
EmployeeNo
-----------
101
102
103
104
105
UNIÓN TODOS
La declaración UNION ALL es similar a UNION, combina resultados de varias tablas, incluidas filas duplicadas.
Sintaxis
A continuación se muestra la sintaxis básica de la instrucción UNION ALL.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
UNION ALL
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Ejemplo
A continuación se muestra un ejemplo de la declaración UNION ALL.
SELECT EmployeeNo
FROM
Employee
UNION ALL
SELECT EmployeeNo
FROM
Salary;
Cuando se ejecuta la consulta anterior, produce el siguiente resultado. Puede ver que también devuelve los duplicados.
EmployeeNo
-----------
101
104
102
105
103
101
104
102
103
INTERSECARSE
El comando INTERSECT también se usa para combinar resultados de múltiples sentencias SELECT. Devuelve las filas de la primera instrucción SELECT que tiene una coincidencia correspondiente en las segundas instrucciones SELECT. En otras palabras, devuelve las filas que existen en ambas sentencias SELECT.
Sintaxis
A continuación se muestra la sintaxis básica de la instrucción INTERSECT.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
INTERSECT
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Ejemplo
A continuación se muestra un ejemplo de instrucción INTERSECT. Devuelve los valores EmployeeNo que existen en ambas tablas.
SELECT EmployeeNo
FROM
Employee
INTERSECT
SELECT EmployeeNo
FROM
Salary;
Cuando se ejecuta la consulta anterior, devuelve los siguientes registros. EmployeeNo 105 está excluido ya que no existe en la tabla SALARY.
EmployeeNo
-----------
101
104
102
103
MENOS / EXCEPTO
Los comandos MINUS / EXCEPT combinan filas de varias tablas y devuelven las filas que están en el primer SELECT pero no en el segundo SELECT. Ambos devuelven los mismos resultados.
Sintaxis
A continuación se muestra la sintaxis básica de la declaración MINUS.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
MINUS
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Ejemplo
A continuación se muestra un ejemplo de declaración MINUS.
SELECT EmployeeNo
FROM
Employee
MINUS
SELECT EmployeeNo
FROM
Salary;
Cuando se ejecuta esta consulta, devuelve el siguiente registro.
EmployeeNo
-----------
105