我有一张表:
1 a a1 a2
1 b b1 b2
1 c c1 c2
1 d d1 d2
2 a a1 a2
2 b b1 b2
2 c c1 c2
3........
3........
........
........
n x x1 x2
n y y1 y2
n z z1 z2
由此,我想得到每个数字(1,2,3,4 ...... n)一些指定数量(比如2)的行。
结果:
1 a a1 a2
1 b b1 b2
2 a a1 a2
2 b b1 b2
.........
.........
n x x1 x2
n y y1 y2
我正在尝试group by
和string_agg()
。但我无法将其限制为指定的数字。
我该怎么办呢?
答案 0 :(得分:1)
这可以使用window function:
来完成select nr, col1, col2, col3
from (
select nr, col1, col2, col3,
row_number() over (partition by nr order by col1) as rn
from the_table
) t
where rn <= 2;
如果要影响返回哪些行,可以调整定义窗口函数中行的顺序的order by
。