Diretrizes para usar Union
Siga estas diretrizes ao usar operadores UNION:
Todas as listas selecionadas nas instruções que estão sendo combinadas com UNION devem ter o mesmo número de expressões (nomes de coluna, expressões aritméticas, funções de agregação, e assim por diante).
Colunas correspondentes nos conjuntos de resultados que estão sendo combinadas com UNION ou qualquer subconjunto de colunas usado em consultas individuais devem ser do mesmo tipo de dados, ter uma possível conversão de dados implícita entre os dois tipos de dados ou ter uma conversão explícita fornecida. Por exemplo, um operador UNION entre uma coluna de tipo de dados datetime e um de tipo de dados binary não funcionará a menos que uma conversão explícita seja fornecida. Porém, um operador UNION funcionará entre uma coluna de tipo de dados money e um de tipo de dados int , porque eles podem ser convertidos implicitamente.
Colunas do tipo de dados xml devem ser equivalentes. Todas as colunas ou devem ser ou não digitadas em um esquema XML. Se digitada, elas devem ser digitadas na mesma coleção de esquema XML.
Colunas de conjunto de resultados correspondentes nas instruções individuais que estão sendo combinadas com UNION devem ocorrer na mesma ordem, porque UNION compara as colunas uma a uma na ordem fornecida nas consultas individuais.
Segue um exemplo.
TABLE3
TABLE4
A
B
C
A
B
INT
CHAR(4)
CHAR(4)
CHAR(4)
FLOAT
---
-------
-------
-------
-------
1
ABC
JKL
JKL
1.000
2
DEF
MNO
MNO
5.000
3
GHI
PQR
Execute esta consulta:
SELECT a, b FROM table3 UNION SELECT b, a FROM table4
Segue um conjunto de resultados:
a b -------- ----- 1.000000 abc 2.000000 def 3.000000 ghi 1.000000 jkl 5.000000 mno
Quando tipos de dados diferentes são combinados em uma operação UNION, eles são convertidos usando as regras de precedência de tipo de dados. No exemplo anterior, os valores int são convertidos em float, porque float tem precedência maior que int. Para mais informações, consulte Precedência de tipo de dados (Transact-SQL).
Esta consulta gera uma mensagem de erro, porque os tipos de dados de colunas correspondentes não são compatíveis:
SELECT b, c FROM table3 UNION SELECT a, b FROM table4
Os nomes de coluna na tabela resultante de UNION são tirados da primeira consulta individual na instrução UNION. Para consultar a uma coluna no conjunto de resultados por um nome novo (por exemplo, em uma cláusula ORDER BY), a coluna deve se referir àquele modo na primeira instrução SELECT:
SELECT city AS Cities FROM stores_west UNION SELECT city FROM stores_east ORDER BY city
Consulte também