Descripción
La función UNION
calcula una nueva tabla que contiene todas las filas de cada una de las dos o más expresiones de tabla.
Uso
UNION(<Expresión de tabla>, <Expresión de tabla 2>, <Expresión de tabla 3>)
La función de unión calcula una nueva tabla que contiene todas las filas de cada una de las dos expresiones de tabla.
- Cada tabla debe tener el mismo número de columnas.
- Las columnas se combinan por su posición en sus respectivas tablas.
- Los nombres de las columnas en la tabla devuelta coincidirán con los nombres de las columnas en el primer argumento de la tabla.
- Las filas duplicadas se conservan.
- La tabla devuelta tiene linaje cuando es posible. Por ejemplo, si la primera columna de cada table_expression tiene linaje a la misma columna base C1 en el modelo, la primera columna en el resultado de
UNION tendrá linaje a C1. Sin embargo, si las columnas combinadas tienen linaje a diferentes columnas base, o si
hay una columna de extensión, la columna resultante en UNION no tendrá linaje. - Cuando los tipos de datos difieren, el tipo de dato resultante se determina según las reglas de coerción de tipos de datos.
- La tabla devuelta no contendrá columnas de tablas relacionadas.
Ejemplos
Contar beneficiarios únicos en múltiples actividades
La función UNION es útil para combinar información similar que está almacenada en múltiples formularios. Por ejemplo, si está gestionando un programa que ofrece capacitación y préstamos al mismo grupo de personas, podría interesarle saber a cuántas personas únicas ha apoyado cada trimestre.
Si los detalles sobre la capacitación y los préstamos se almacenan en formularios diferentes, entonces necesitará la función UNION para combinar primero la lista de receptores y luego encontrar el número de beneficiarios distintos.
Luego, necesita combinar la fecha y el ID del beneficiario de los dos formularios usando union. Por ejemplo:
UNION(
SELECTCOLUMNS(participants,
"date", @parent.date,
"beneficiary", participant),
SELECTCOLUMNS(loans,
"date", disbursement_date,
"beneficiary", recipient)) |>
COUNTDISTINCTX(beneficiary)
En el ejemplo anterior, primero tenemos que remodelar los dos formularios, Participantes y Préstamos, para que tengan los mismos campos en el mismo orden. Para los participantes de la capacitación, la fecha relevante proviene en realidad del formulario padre y está asociada con la capacitación. Para los Préstamos, elegimos usar la fecha de desembolso.
La función UNION nos da una gran lista de IDs de beneficiarios y la función COUNTDISTINCTX cuenta el número de IDs de beneficiarios únicos.