按记录组而不是行进行分页

时间:2015-10-28 21:25:39

标签: sql sql-server sql-server-2012

我有一个返回以下内容的查询:

ID   Rank
1     1
2     1
3     2
4     3
5     4
6     4

我试图在末尾使用OFFSET / FETCH NEXT来返回分页记录

即。如果我只想要每页3行并且我想要第1页,我会将1传递给@Page,将3传递给@PageRecordCount,对于第2页,@ Page = 2来获取第2页,依此类推......

OFFSET (@Page - 1) * @PageRecordCount  ROWS
FETCH NEXT @PageRecordCount ROWS ONLY;

如果我需要为每个页面完整分组记录,我该如何做到这一点?

我期待的是: @Page = 1 @PageRecordCount = 3

返回:

ID
1
2
3
4

我想返回分组数,而不是行数。这可能吗?

1 个答案:

答案 0 :(得分:2)

我想你想要这个:

;with cte as(your current query)
select * from cte
where rank > (@page - 1) * @count and rank <= @page * @count