Oracle/PLSQL: operador UNION

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: operador UNION

Este tutorial de Oracle describe cómo usar Oracle operador de la UNIÓN Con sintaxis y ejemplos.

describir

El operador Oracle UNION se usa para combinar los conjuntos de resultados de 2 o más declaraciones Oracle SELECT. Elimina filas duplicadas entre varias declaraciones SELECT.

Cada declaración SELECT en el operador UNION debe tener la misma cantidad de campos en un conjunto de resultados con tipos de datos similares.

sintaxis

La sintaxis del operador UNION en Oracle/PLSQL es:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

parámetro o parámetro

expresión1, expresión2, expresión_n La columna o el cálculo que desea recuperar. tabla La tabla de la que desea recuperar registros. Debe aparecer al menos una tabla en la cláusula FROM. La condición WHERE es opcional. Para seleccionar las condiciones que debe cumplir un registro.

notas

  • Debe haber el mismo número de expresiones en ambas sentencias SELECT.

Ejemplo: devolver un solo campo

El siguiente es un ejemplo del operador UNION de Oracle que devuelve un campo (y ambos campos tienen el mismo tipo de datos) de varias declaraciones SELECT:

SELECT supplier_id
FROM suppliers
UNION
SELECT supplier_id
FROM order_details;

En este ejemplo de operador de Oracle UNION, si el ID del proveedor aparece tanto en la tabla de proveedores como en la de detalles del pedido, aparecerá una vez en su conjunto de resultados. El operador Oracle UNION elimina los duplicados.si lo haces No Para eliminar duplicados, pruebe el operador Oracle UNION ALL.

Ejemplo: uso de ORDEN POR

El operador UNION de Oracle puede utilizar la cláusula ORDER BY para ordenar los resultados de la consulta.

Por ejemplo:

SELECT supplier_id, supplier_name
FROM suppliers
WHERE supplier_id <= 500
UNION
SELECT company_id, company_name
FROM companies
WHERE company_name="Apple"
ORDER BY 2;

En este operador UNION de Oracle, debido a que los nombres de columna son diferentes entre las dos declaraciones SELECT, es más ventajoso referirse a las columnas en la cláusula ORDER BY por su posición en el conjunto de resultados.En este ejemplo, hemos ordenado los resultados por nombre del proveedor/nombre de la empresa en orden ascendente como ORDER BY 2.

Posición n.º 2 del campo Nombre del proveedor/Nombre de la empresa en el conjunto de resultados.

Preguntas frecuentes

Problema: necesito comparar dos fechas y devolver el recuento de un campo en función del valor de la fecha. Por ejemplo, tengo un campo de fecha en una tabla llamada fecha de última actualización. Tengo que comprobar trunc(last_updated_date >= trunc(sysdate – 13).

R: Dado que está utilizando la función Oracle COUNT, que es una función agregada, le recomendamos que utilice el operador Oracle UNION. Por ejemplo, puedes intentar lo siguiente:

SELECT a.code AS Code, a.name AS Name, COUNT(b.Ncode)
FROM cdmaster a, nmmaster b
WHERE a.code = b.code
AND a.status = 1
AND b.status = 1
AND b.Ncode <> 'a10'
AND TRUNC(a.last_updated_date) <= TRUNC(sysdate - 13)
GROUP BY a.code, a.name
UNION
SELECT a.code AS Code, a.name AS Name, COUNT(b.Ncode)
FROM cdmaster a, nmmaster b
WHERE a.code = b.code
AND a.status = 1
AND b.status = 1
AND b.Ncode <> 'a10'
AND TRUNC(a.last_updated_date) > TRUNC(sysdate - 13)
GROUP BY a.code, a.name;

El operador Oracle UNION le permite realizar un conteo basado en un conjunto de criterios.

TRUNC(a.last_updated_date) <= TRUNC(sysdate - 13)

y contar de acuerdo con otro conjunto de criterios.

TRUNC(a.last_updated_date) > TRUNC(sysdate - 13)