2017-08-03 71 views
1

我期待返回一行对合并多个行,以便为示例表:是否有可能多行转换成单排在Oracle

ID | VAL1 | VAL2  
1 | v1 | v2  
1 | v3 |v4 

我想回:

ID|VAL1|VAL2|VAL1_1|VAL2_1 
1 | v1 | v2 | v3 | v4 

其中id | VAL1 | VAL2 | VAL1_1 | VAL2_1是列标题

我不相信一个支点可以作为值(V1等),可以是任何值。

任何帮助,将不胜感激

+0

做你的实际表也只有两列合并? – RealCheeseLord

+0

是的只有2列,但可能有超过2行 – sadWal

回答

2

如果你想有一个动态的支点,那么你需要动态SQL。但是,你可以做你想做有条件聚集了什么:

select id, 
     max(case when seqnum = 1 then val1 end) as val1, 
     max(case when seqnum = 1 then val2 end) as val2, 
     max(case when seqnum = 2 then val1 end) as val1_1, 
     max(case when seqnum = 2 then val2 end) as val2_1 
from (select t.*, row_number() over (partition by id order by id) as seqnum 
     from t 
    ) t 
group by id; 

如果你的行以一种特殊的方式排序,那么你就应该修改order by

+0

非常感谢,这已经解决了我的问题 – sadWal

相关问题