繁体   English   中英

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查询的工作方式。 选择某些东西,文本从表名或类似名称不起作用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM