2012-07-30 80 views
0

我的表看起來像查詢從表中多行從同一個表

ID AB_ID VALUES 
1  2  20 
2  2  10 
3  2  30 
4  2  60 

返回一行,我想創建一個查詢返回

AB_ID  value1  value2  value3  value4 
    2  20   10  30   60  

謝謝你的幫助。

+0

什麼數據庫引擎?你是否每AB_ID有4行? value1到value4是否與每個AB_ID的ID列升序相對應? – gbn 2012-07-30 15:02:45

+0

樞軸條款是你需要的 – 2012-07-30 15:04:15

+0

@ElVieejo:也許不是..我們沒有足夠的信息 – gbn 2012-07-30 15:04:42

回答

0

既然你知道有將要每AB_ID四行,你應該能夠沿着這些路線做一個支點

SELECT ab_id, 
     MAX(CASE WHEN rn = 1 THEN values ELSE NULL END) value1, 
     MAX(CASE WHEN rn = 2 THEN values ELSE NULL END) value2, 
     MAX(CASE WHEN rn = 3 THEN values ELSE NULL END) value3, 
     MAX(CASE WHEN rn = 4 THEN values ELSE NULL END) value4 
    FROM (SELECT ab_id, 
       values, 
       rank() over (partition by ab_id 
           order by id) rn 
      FROM your_table) 
GROUP BY ab_id 

如果您使用的是Oracle 11.2,你應該能夠使用PIVOT關鍵字也是如此。我不確定你使用的是什麼版本的Oracle。