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
谢谢你的帮助。
我的表看起来像查询从表中多行从同一个表
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。
什么数据库引擎?你是否每AB_ID有4行? value1到value4是否与每个AB_ID的ID列升序相对应? – gbn 2012-07-30 15:02:45
枢轴条款是你需要的 – 2012-07-30 15:04:15
@ElVieejo:也许不是..我们没有足够的信息 – gbn 2012-07-30 15:04:42