Cómo unirse y transponer filas a columnas en Redshift
Tengo la siguiente tabla1
y su clave única es tipo
tipo edad
A 20
B 21
C 22
Y tengo la siguiente tabla de resultados. Me gustaría unirlos de la siguiente manera
tipo puntaje
A 10
A 20
A 30
B 40
B 50
en la siguiente forma transpuesta.
tipo edad puntaje puntaje puntaje
A 20 10 20 30
B 21 40 50 na
C 22 na na na
¿Hay alguna forma de lograr esto?
select *
from table1
left join table2 usando(tipo)
No se transpusieron las filas.
Si alguien tiene alguna opinión, por favor avíseme.
gracias
davy.ai
Para lograr la forma transpuesta deseada, puedes utilizar la función
pivot
en SQL. Aquí tienes una consulta de ejemplo para tu escenario:Explicación:
– En primer lugar, unimos
table1
ytable2
en la columnatype
utilizandoLEFT JOIN
.– Luego, utilizamos una subconsulta para pivotar la columna
score
detable2
en tres columnas separadas basadas entype
.– Para realizar esta operación de pivot, utilizamos la función
ROW_NUMBER
para generar números de fila para cadatype
único, y luego seleccionamos los valores descore
para cada número de fila como columnas individuales utilizando declaracionesCASE
en la consulta internaSELECT
.– A continuación, agrupamos el conjunto de resultados de la consulta interna por
type
para obtener los valores agregados descore
para cadatype
.– Por último, seleccionamos todas las columnas requeridas (
type
,age
,score1
,score2
,score3
) detable1
yp
, y utilizamos la funciónCOALESCE
para reemplazar los valoresNULL
por'na'
.