es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.