我有以下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()。
我如何创建获取两个参数的存储过程(每页的项目数和要返回的页面)?
答案 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