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