db2 分组前几条数据,分组取最后几条数据

项目中需要分组取某个值最近的前2条数据
比如表
a(id,name,num)
数据
1  a  1
2  a  1
3  a  3
4  b  1
5  b  6
6  b  5
7  b  7


需求 :已知参数 id 为2,6
查询出相同name,最接近num的前2个的数据
结果:
1 a 1
2 a 1
4 b 1
6 b 5
------------
思路
1、排序并加入分组行号(列a)
2、加入当前id分组行号(列b)
3、根据分组行号比较

模拟过程
1、结果
1  a  1 1
2  a  1 2
3  a  3 3
4  b  1 1
6  b  5 2
5  b  6 3
7  b  7 4
2、结果 (id=2的行号是2,id=6的行号也是2)
1  a  1 1 2
2  a  1 2 2
3  a  3 3 2
4  b  1 1 2
6  b  5 2 2
5  b  6 3 2
7  b  7 4 2
3、通过列a和列b
条件 列a<=列b and 列a>=列b-2
结果出来:
1 a 1
2 a 1
4 b 1
6 b 5

猜你喜欢

转载自hvang1988.iteye.com/blog/2275956
今日推荐