
Cláusula UNION en consultas
- El operador UNION permite combinar resultados de varias consultas con SELECT en un único resultado.
- Todas las instrucciones Select deben tener la misma cantidad de campos y todos los campos deben ser datos compatibles.
- Los nombres de los campos del conjunto de resultados son iguales a los especificados en la primera consulta.
- Los resultados que se repiten son eliminados al hacer una combinación de select usando Union.
- Tenga en cuenta la intercalación del servidor y de la base de datos para que SQL Server decida cuando dos datos de tipo caracter son iguales o diferentes.
- Se puede especificar la palabra All para que los resultados repetidos no se eliminen del conjunto de resultados final.
- Se debe especificar solamente una cláusula Order by y se escribe al final de la instrucción.
- No es posible hacer UNION con bases de datos que tienen diferente intercalación.
- No se puede incluir campos de tipo nText.
Ejemplos
Usando Northwind
Use Northwind
go
Ejercicio 1
Listar los productos de categoria 1 y los productos de categoría 5
Select * from Products where CategoryID = 1
union
Select * from Products where CategoryID = 5
go
La imagen muestra el conjunto de resultados. Note que se han resaltado las categorías de los productos.

Ejercicio 2
Listar los clientes de Francia (France), España (Spain) y Canada.
Select CustomerID As ‘Código’, CompanyName As ‘Cliente’,
Country As ‘País’
from Customers where Country = ‘France’
Union
Select CustomerID As ‘Código’, CompanyName As ‘Cliente’,
Country As ‘País’
from Customers where Country = ‘Spain’
union
Select CustomerID As ‘Código’, CompanyName As ‘Cliente’,
Country As ‘País’
from Customers where Country = ‘Canada’
Order by País, Cliente
go

Ejercicio 3
Listar los proveedores de que tienen mas de 3 productos registrados o los que tienen un producto. Ordenador por cantidad de productos descendentemente.
select S.SupplierID, S.CompanyName, S.ContactName,
(select count(P.ProductID)
from Products As P where P.SupplierID= S.SupplierID)
As ‘Cantidad de Productos’
from Suppliers As S
where (select count(P.ProductID)
from Products As P where P.SupplierID= S.SupplierID) > 3
union
select S.SupplierID, S.CompanyName, S.ContactName,
(select count(P.ProductID)
from Products As P where P.SupplierID= S.SupplierID)
As ‘Cantidad de Productos’
from Suppliers As S
where (select count(P.ProductID)
from Products As P where P.SupplierID= S.SupplierID) = 1
order by [Cantidad de Productos] desc
go
