Just playing around.... declare @Page int, @PageSize int set @Page = 1; set @PageSize = 10; with PagedResult as (select ROW_NUMBER() over (order by PersonID) as RowNum, * from Table1) select * from PagedResult where RowNum between case when @Page > 1 then (@PageSize * @Page) - @PageSize + 1 else @Page end and @PageSize * @Page order by PersonID [EDITED: For SQL Server 2005 RTM] ......