Oracle SQL - 行成列

Oracle SQL - Rows into Columns

我想知道是否可以在 Oracle 11g 中将某些行显示为列。

我想要以下内容

id      language     text
--------------------------
1       english      some example
1       german       an example
2       english      test
2       german       test123

要这样显示:

id      english        german
---------------------------------
1       some example   an example
2       test           test123

我尝试使用 pivot 但无法弄清楚如何正确处理它,因为 pivot 需要聚合函数。

假设每个 id 每个语言有一个文本,您可以在 pivot.

中的文本列中使用 maxmin
select * from tablename
pivot
(max(text) for language in ('english' as ENGLISH,'german' as GERMAN))

编辑:根据 OP 的评论 如果我不想 select 在这种情况下的所有内容,我无法弄清楚 SELECT 查询是如何工作的。 SELECT 一些东西,来自表名的文本或类似的东西不起作用

请记住,您应该 select 您正在 pivot 的所有专栏。

select * from 
(select text,language,id,something from tablename) t
pivot
(max(text) for language in ('english' as ENGLISH,'german' as GERMAN))

编辑: 要 unpivot 使用

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))