2017-08-03 72 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

相關問題