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    

感谢您的帮助。

4

1 回答 1

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。

于 2012-07-30T15:24:30.007 回答