Me preguntaba si es posible mostrar algunas filas como columnas en Oracle 11g.
Quiero lo siguiente
id language text
--------------------------
1 english some example
1 german an example
2 english test
2 german test123
para ser mostrado de esta manera:
id english german
---------------------------------
1 some example an example
2 test test123
Traté de usar pivot
pero no fue capaz de averiguar cómo manejarlo correctamente, ya que pivot
requiere una función agregada.
Respuestas
2 para la respuesta № 1Suponiendo que tenga un texto por idioma por ID, puede usar max
o min
en la columna de texto en pivot
.
select * from tablename
pivot
(max(text) for language in ("english" as ENGLISH,"german" as GERMAN))
EDITAR: Basado en el comentario de OP Estoy teniendo problemas para entender cómo funciona la consulta SELECT si no quiero seleccionar todo en ese caso. SELECCIONE algo, el texto de nombre de tabla o similar no funciona
Recuerda que debes seleccionar todas las columnas que eres pivot
En g.
select * from
(select text,language,id,something from tablename) t
pivot
(max(text) for language in ("english" as ENGLISH,"german" as GERMAN))
Editar: A unpivot
utilizar
select *
from (
select * from
(select text,language,id,something from tablename) t
pivot
(max(text) for language in ("english" as ENGLISH,"german" as GERMAN))
) p
unpivot (text for language in (ENGLISH, GERMAN))