使用允许分页的sql server 2005创建存储过程

时间:2011-06-15 16:14:20

标签: sql-server

我有以下SQL查询:

DECLARE @Page int, @RegistriesPerPage int , @FirstRegistry int, @LastRegistry int
Set @Page=1
Set @RegistriesPerPage=2
Set @FirstRegistry = (@Page - 1) * @RegistriesPerPage
Set @LastRegistry = (@Page * @RegistriesPerPage +1)


SELECT I.ID, Name, ROW_NUMBER() OVER (ORDER BY ID DESC) as Counter
FROM Items I
WHERE Counter > @FirstRegistry AND Counter < @LastRegistry

group by Id,Name

我试图让它工作,但显然我不能因为我不能在where子句上使用“Counter”(甚至是ROW_Number()。

我如何创建获取两个参数的存储过程(每页的项目数和要返回的页面)?

1 个答案:

答案 0 :(得分:1)

您可以使用派生查询:

SELECT * FROM 
(
  SELECT I.ID, Name, ROW_NUMBER() OVER (ORDER BY ID DESC) as Counter
  FROM Items I      
  group by Id,Name
)a
WHERE Counter > @FirstRegistry AND Counter < @LastRegistry