Teradata - Operadores SET

Os operadores SET combinam resultados de várias instruções SELECT. Isso pode parecer semelhante a Joins, mas joins combina colunas de várias tabelas, enquanto os operadores SET combinam linhas de várias linhas.

Regras

  • O número de colunas de cada instrução SELECT deve ser o mesmo.

  • Os tipos de dados de cada SELECT devem ser compatíveis.

  • ORDER BY deve ser incluído apenas na instrução SELECT final.

UNIÃO

A instrução UNION é usada para combinar resultados de várias instruções SELECT. Ele ignora duplicatas.

Sintaxe

A seguir está a sintaxe básica da instrução UNION.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
UNION  

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Exemplo

Considere a seguinte tabela de funcionários e tabela de salários.

EmployeeNo Primeiro nome Último nome Data de adesão Departamento Não Data de nascimento
101 Mike James 27/03/2005 1 05/01/1980
102 Robert Williams 25/04/2007 2 05/03/1983
103 Peter Paulo 21/03/2007 2 01/04/1983
104 Alex Stuart 01/02/2008 2 06/11/1984
105 Robert James 04/01/2008 3 01/12/1984
EmployeeNo Bruto Dedução Pagamento líquido
101 40.000 4.000 36.000
102 80.000 6.000 74.000
103 90.000 7.000 83.000
104 75.000 5.000 70.000

A seguinte consulta UNION combina o valor EmployeeNo das tabelas Employee e Salary.

SELECT EmployeeNo 
FROM  
Employee 
UNION 

SELECT EmployeeNo 
FROM  
Salary;

Quando a consulta é executada, ela produz a seguinte saída.

EmployeeNo 
----------- 
   101 
   102 
   103 
   104 
   105

UNION ALL

A instrução UNION ALL é semelhante a UNION, ela combina resultados de várias tabelas, incluindo linhas duplicadas.

Sintaxe

A seguir está a sintaxe básica da instrução UNION ALL.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
UNION ALL 

SELECT col1, col2, col3…
FROM  
<table 2> 
[WHERE condition];

Exemplo

A seguir está um exemplo para a instrução UNION ALL.

SELECT EmployeeNo 
FROM  
Employee 
UNION ALL 

SELECT EmployeeNo 
FROM  
Salary;

Quando a consulta acima é executada, ela produz a seguinte saída. Você pode ver que ele retorna as duplicatas também.

EmployeeNo 
----------- 
    101 
    104 
    102 
    105 
    103 
    101 
    104 
    102 
    103

INTERSECT

O comando INTERSECT também é usado para combinar resultados de várias instruções SELECT. Ele retorna as linhas da primeira instrução SELECT que possui correspondência correspondente nas segundas instruções SELECT. Em outras palavras, ele retorna as linhas que existem em ambas as instruções SELECT.

Sintaxe

A seguir está a sintaxe básica da instrução INTERSECT.

SELECT col1, col2, col3… 
FROM  
<table 1>
[WHERE condition] 
INTERSECT 

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Exemplo

A seguir está um exemplo de instrução INTERSECT. Ele retorna os valores EmployeeNo existentes em ambas as tabelas.

SELECT EmployeeNo 
FROM  
Employee 
INTERSECT 

SELECT EmployeeNo 
FROM  
Salary;

Quando a consulta acima é executada, ela retorna os seguintes registros. EmployeeNo 105 é excluído porque não existe na tabela SALARY.

EmployeeNo 
----------- 
   101 
   104 
   102 
   103

MENUS / EXCEPT

Os comandos MINUS / EXCEPT combinam linhas de várias tabelas e retornam as linhas que estão no primeiro SELECT, mas não no segundo SELECT. Ambos retornam os mesmos resultados.

Sintaxe

A seguir está a sintaxe básica da instrução MINUS.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
MINUS 

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Exemplo

A seguir está um exemplo de instrução MINUS.

SELECT EmployeeNo 
FROM  
Employee 
MINUS 

SELECT EmployeeNo 
FROM  
Salary;

Quando esta consulta é executada, ela retorna o seguinte registro.

EmployeeNo 
----------- 
   105