Oracle SQL - 进入列

时间:2016-07-25 13:30:17

标签: sql oracle pivot

我想知道是否可以在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需要聚合函数。

1 个答案:

答案 0 :(得分:2)

假设每个ID每个语言都有一个文本,您可以在max的文本列中使用minpivot

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

编辑:根据OP的评论如果我不想在这种情况下选择所有内容,我很难弄清楚SELECT查询的工作原理。选择某些东西,文本FROM tablename或类似的东西不起作用

请记住,您应该选择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))