Code USE AdventureWorks; GO WITH OrderedOrders AS (SELECT SalesOrderID, OrderDate,customerid, ROW_NUMBER() OVER (orderby SalesOrderID Asc)as RowNumber FROM Sales.SalesOrderHeader where customerid=8) SELECT a.RowNumber,a.SalesOrderID,a.customerid b.salesorderid as[next],c.salesorderid as[preview] FROM OrderedOrders a leftjoin OrderedOrders b on a.rownumber=b.rownumber-1 leftjoin OrderedOrders c on a.rownumber=c.rownumber+1 WHERE RowNumber between50and60; select a.*, b.salesorderid as[next],c.salesorderid as[preview] from testtbl a leftjoin testtbl b on a.rownumber=b.rownumber-1 leftjoin testtbl c on a.rownumber=c.rownumber+1orderby rownumber desc select a.*, b.salesorderid as[next],c.salesorderid as[preview] from testtbl a leftjoin testtbl b on a.rownumber=b.rownumber-1 leftjoin testtbl c on a.rownumber=c.rownumber+1 USE AdventureWorks; GO WITH OrderedOrders AS (SELECT SalesOrderID, OrderDate,customerid, ROW_NUMBER() OVER (orderby SalesOrderID Asc)as RowNumber FROM Sales.SalesOrderHeader where customerid=8) SELECT a.RowNumber,a.SalesOrderID,a.customerid ,b.salesorderid as[next],c.salesorderid as[preview] FROM OrderedOrders a leftjoin OrderedOrders b on a.rownumber=b.rownumber-1 leftjoin OrderedOrders c on a.rownumber=c.rownumber+1where a.salesorderid=63220