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