Cómo hacer que SQL imprima en la misma fila en lugar de varias filas (la base de datos es DB2)
Tengo 2 tablas de las cuales necesito seleccionar datos.
tabla1:
ID | nombre |
---|---|
1 | John |
2 | Mark |
3 | Anna |
tabla2:
Person_ID | tipo | año |
---|---|---|
1 | nacimiento | 1920 |
1 | graduación | 1950 |
1 | fallecimiento | 2000 |
2 | nacimiento | 1940 |
2 | graduación | 1960 |
2 | fallecimiento | 2011 |
Quiero escribir una consulta que los ponga todos en la misma fila como:
id | nombre | nacimiento | graduación | fallecimiento |
---|---|---|---|---|
1 | John | 1920 | 1950 | 2000 |
Intenté:
SELECT
t1.id AS id, t1.nombre AS nombre,
CASE WHEN t2.tipo = 'nacimiento' THEN t2.año END AS nacimiento,
CASE WHEN t2.tipo = 'graduación' THEN t2.año END AS graduación,
CASE WHEN t2.tipo = 'fallecimiento' THEN t2.año END AS fallecimiento
FROM
tabla1 t1
INNER JOIN
tabla2 t2 ON t1.id = t2.Person_ID
WHERE
t1.id = 1
GROUP BY
t1.id, t1.nombre, t2.tipo, t2.año
Este es el resultado que obtengo ahora:
id | nombre | nacimiento | graduación | fallecimiento |
---|---|---|---|---|
1 | John | 1920 | null | null |
1 | John | null | 1950 | null |
1 | John | null | null | 2000 |
davy.ai
Para obtener el resultado deseado, puedes usar subconsultas en su lugar:
Esto te dará una única fila con los datos que necesitas: