我的表格似乎是
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 :(得分: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。