Directrices para usar UNION
Cuando utilice operadores UNION, siga estas directrices:
Todas las listas de selección de las instrucciones que se combinan con UNION deben tener el mismo número de expresiones (nombres de columna, expresiones aritméticas, funciones de agregado, etc.).
Las columnas correspondientes del conjunto de resultados combinado con UNION, o cualquier subconjunto de columnas que se use en consultas individuales, deben ser del mismo tipo de datos, tener la posibilidad de convertir los tipos de datos de forma implícita o suministrar una conversión explícita. Por ejemplo, no es correcto usar UNION entre una columna de tipo de datos datetime y una de tipo de datos binary, salvo si se indica un tipo de conversión explícito. Sin embargo, sí se puede usar un operador UNION entre una columna de tipo de datos money y otra de tipo de datos int, puesto que se puede realizar una conversión implícita.
Las columnas con el tipo de datos xml deben ser equivalentes. Todas las columnas deben seguir un esquema XML o bien ninguno. Si siguen alguno, debe pertenecer a la misma colección de esquemas XML.
Las columnas del conjunto de resultados correspondiente de las instrucciones individuales que se combinan con UNION deben estar en el mismo orden, porque UNION compara las columnas de una en una en el orden que se indica en las consultas individuales.
A continuación se muestra un ejemplo.
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
Ejecute esta consulta:
SELECT a, b FROM table3 UNION SELECT b, a FROM table4
El conjunto de resultados es:
a b -------- ----- 1.000000 abc 2.000000 def 3.000000 ghi 1.000000 jkl 5.000000 mno
Cuando se combinan distintos tipos de datos en una operación UNION, se convierten con las reglas de prioridad de los tipos de datos. En el ejemplo anterior, los valores int se convierten a float porque float tiene mayor prioridad que int. Para obtener más información, vea Prioridad de tipo de datos (Transact-SQL).
En la consulta siguiente se produce un mensaje de error porque los tipos de datos de las columnas correspondientes no son compatibles:
SELECT b, c FROM table3 UNION SELECT a, b FROM table4
Los nombres de las columnas de la tabla que resulta de la operación UNION se toman de la primera consulta individual de la instrucción UNION. Para hacer referencia a una columna del conjunto de resultados por un nuevo nombre (por ejemplo, en una cláusula ORDER BY), debe hacerse referencia a ella de esta forma en la primera instrucción SELECT:
SELECT city AS Cities FROM stores_west UNION SELECT city FROM stores_east ORDER BY city
Vea también