我的桌子看起来像
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
感谢您的帮助。
由于您知道每行将有四行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。