[英]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
的文本列上使用max
或min
。
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.