将列反转为行(oracle)
Posted
技术标签:
【中文标题】将列反转为行(oracle)【英文标题】:Unpivot columns into rows (oracle) 【发布时间】:2016-12-16 14:35:40 【问题描述】:很像原来的 SO Pivoting rows into columns dynamically in Oracle
但我想反其道而行之
我怎样才能得到
ID NAME AGE GENDER STATUS
---- ----- ----- ------ --------
1 Bob 30 male
2 Susan married
进入这个
ID K V
---- ----- -----
1 name Bob
1 age 30
1 gender male
2 name Susan
2 status married
【问题讨论】:
我想你在找UNPIVOT
。
【参考方案1】:
您正在寻找unpivot
。
select * from t
unpivot (
v for k in ("NAME","AGE","GENDER","STATUS")
) u
如果年龄列是整数,则可能存在类型不匹配。在这种情况下,在取消透视之前将其转换为字符。
select *
from (select id,name,to_char(age) age,gender,status from t) t
unpivot (
v for k in ("NAME","AGE","GENDER","STATUS")
) u
【讨论】:
以上是关于将列反转为行(oracle)的主要内容,如果未能解决你的问题,请参考以下文章