Índice
1. Introducción2. Palabras Clave
3. Problema
4. Solución
5. Discusión de la Solución
5.1 Operador UNION ALL
6. Práctica: Combinación Cuotas Actuales e Históricas
7. Conclusiones
8. Literatura & Enlaces
1. Introducción
A través de esta receta T-SQL el programador aprenderá a combinar los resultados de dos o más sentencias SELECT a través del uso del operador UNION ALL. Este tipo de operación puede resultar útil para combinar datos repetidos en tablas diferentes; por ejemplo cuotas de ventas a lo largo del tiempo y actuales.
2. Palabras Clave
- Combinación
- Registro
- UNION
- UNION ALL
3. Problema
Combinar los registros de dos sentencias SELECT.
4. Solución
El operador UNION ALL permite combinar registros de dos o más tablas.
5. Discusión de la Solución
5.1 Operador UNION ALL
El operador UNION ALL se usa para combinar los registros de dos o más sentencias SELECT. Esta es su sintaxis:
SELECT expresion_1, expresion_2, ..., expresion_n
FROM tabla
[WHERE condiciones]
UNION ALL
SELECT expresion_1, expresion_2, ..., expresion_n
FROM tabla
[WHERE condiciones]
FROM tabla
[WHERE condiciones]
UNION ALL
SELECT expresion_1, expresion_2, ..., expresion_n
FROM tabla
[WHERE condiciones]
Este operador no elimina registros duplicados recuperados por cada una de las sentencias SELECT. Otro requerimiento consiste en que cada sentencia SELECT debe tener el mismo número expresiones (i.e., campos) y un tipo de dato similar.
Figura 2. Tabla Órdenes. |
Al ejecutar una sentencia T-SQL como esta
SELECT id_proveedor
FROM Proveedores
UNION ALL
SELECT id_proveedor
FROM Ordenes
ORDER BY id_proveedor
FROM Proveedores
UNION ALL
SELECT id_proveedor
FROM Ordenes
ORDER BY id_proveedor
Aquí se puede observar cómo se repite el valor 2000; esto porque está presente en ambas tablas y el operador UNION ALL no remueve registros duplicados.
6. Práctica: Combinación Cuotas Actuales e Históricas
Este ejemplo enseña cómo combinar cuotas de ventas: actuales e históricas.
La declaración del primer SELECT (líneas 1-5) especifica:
- Recuperación de tres valores: identidad del vendedor -desde Sales.SalesPerson-, fecha actual (nótese cómo ha sido renombrada; las funciones no generan un nombre), y la cuota de ventas.
- La cuota de ventas debe ser mayor a 0 (línea 5).
En cuanto a la sentencia SELECT que viene a continuación del operador UNION ALL, se tiene
- Recuperación de valores análogos -en cuanto a número y tipos de datos- a los del primer SELECT.
- El historial de la cuota de ventas también debe ser mayor a 0 (línea 11).
- Aquí se consulta la tabla Sales.SalesPersonQuotaHistory.
Hay que resaltar que esta sentencia cumple los requisitos básicos para poder aplicar el operador UNION ALL:
- Número y tipo de datos análogos.
- Sentencia ORDER BY al final de la sentencia.
Es el momento de ejecutar esta sentencia en Microsoft SQL Management Studio:
Figura 4. UNION ALL entre SalesPerson y SalesPersonQuotaHistory. |
7. Conclusiones
Esta receta demostró cómo combinar los registros de dos tablas que contienen datos relacionados -cuotas de ventas actuales e históricos, por ejemplo- a través del operador UNION ALL.
En la próxima receta T-SQL se demostrará cómo eliminar valores duplicados en una unión de registros.
8. Literatura & Enlaces
Brimhall, J., Dye, D., Gennick, J., Roberts, A., Sheffield, W. (2012). SQL Server 2012 T-SQL Recipes - A Problem-Solution Approach. United States: Apress.SQL: UNION ALL Operator (2015, junio 29). Recuperado desde: http://www.techonthenet.com/sql/union_all.php
V
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.