combinación externa completa en Redshift
Tengo 2 tablas A y B con columnas, que contienen detalles de los estudiantes (todas las columnas son enteros):
A:
st_id,
st_subject_id,
B:
st_id,
st_subject_id,
st_count1,
st_count2
st_id significa identificación del estudiante, st_subject_id es la identificación del tema.
Para el estudiante con identificación 15, hay las siguientes entradas:
A:
15 | 1
15 | 2
15 | 3
B:
15 | 1 | 31 | 11
15 | 2 | 30 | 14
15 | 4 | 21 | 6
15 | 5 | 26 | 9
3 temas en la tabla A y 4 temas (2 coinciden con la tabla A y 2 adicionales) en la tabla B.
Quiero mostrar el resultado final como:
15 | 1 | 31 | 11
15 | 2 | 30 | 14
15 | 3 | null | null
15 | 4 | 21 | 6
15 | 5 | 26 | 9
¿Se puede hacer esto utilizando la unión externa completa en SQL, o por otro método?
davy.ai
Sí, esto se puede hacer utilizando una unión completa externa en SQL. La siguiente consulta se puede utilizar para obtener el resultado deseado:
SELECT COALESCE(A.st_id, B.st_id) AS st_id,
COALESCE(A.st_subject_id, B.st_subject_id) AS st_subject_id,
B.st_count1, B.st_count2
FROM A FULL OUTER JOIN B
ON A.st_id = B.st_id AND A.st_subject_id = B.st_subject_id
ORDER BY st_id, st_subject_id
La función COALESCE se utiliza para seleccionar el valor no nulo de la tabla A o de la tabla B. La cláusula ORDER BY se utiliza para ordenar los resultados por la identificación del estudiante y la identificación de la asignatura.