cómo unirse con una condición complicada en redshift
Tengo la siguiente tabla1
id name
1 A
3 B
y la tabla2
id label value
1 a 10
1 b 11
1 c 12
2 a 13
2 b 14
2 c 15
3 a 16
3 b 17
3 c 18
Mi resultado deseado es el siguiente. Me gustaría unir la tabla1 y la tabla2 en label = a y b
Supongo que debo unir dos veces en cada condición..
id name a b
1 A 10 11
3 B 16 17
Intenté lo siguiente, pero solo obtengo resultados en label = a
select *
from table1
left join table2 using(id)
where label in ('a')
¿Hay alguna forma buena de lograr esto?
Supongo que necesitamos hacer una transposición.
Gracias
davy.ai
Sí, para obtener el resultado deseado, debes transponer los datos en la tabla2. Una posible solución es utilizar una combinación de subconsultas y declaraciones de caso para pivotar los datos. Aquí tienes un ejemplo:
En esta consulta, la subconsulta filtra los datos en la tabla2 para incluir solo las filas donde la etiqueta es ‘a’ o ‘b’. Luego, la consulta principal une la tabla1 y la tabla2 filtrada en función de la id y utiliza declaraciones de caso para pivotar los datos de modo que los valores ‘a’ y ‘b’ se muestren en columnas separadas. Finalmente, los resultados se agrupan por id y nombre.
Esto debería darte el resultado deseado: