你可以用 row_number()
和 mod()
:
select
t.*
1 + mod(row_number() over(order by line_nu) - 1, 5000) batch
from mytable t
另外,如果你想以5000条为单位获取记录,你可以使用限行子句。这样你就可以得到前5000条记录。
select t.*
from mytable t
order by line_nu
fetch first 5000 rows only
然后,你可以按以下方式获取接下来的5000条记录。
select t.*
from mytable t
order by line_nu
offset 5000 rows
fetch next 5000 rows only