查询从同一个表中的多行返回表中的行

时间:2012-07-30 15:00:29

标签: sql oracle

我的表格似乎是

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    

感谢您的帮助。

1 个答案:

答案 0 :(得分: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。