Try with below options. Following query fetches 5 records from 6 to 10:
Option1: Use
Row_Number
SELECT *
FROM (
SELECT DISTINCT ROW_NUMBER() OVER (ORDER BY LocationID) AS RowNum,
l.LocationID,
l.Code,
l.Name,
l.ParentLocationID ,
lt.Code AS LocationTypeCode,
lt.Rank
FROM
Location l INNER JOIN HierarchyP h ON l.LocationID = h.LocationID
INNER JOIN LocationType lt ON lt.LocationTypeID = l.LocationTypeID
WHERE ((ISNULL(@SearchLocationText,'') = '')
OR (l.LocationTypeID <> @SearchLocationType)
OR (l.LocationTypeID = @SearchLocationType AND l.Name LIKE '%' + @SearchLocationText + '%'))
) AS TempResult
WHERE RowNum > 5
AND RowNum <= 10
ORDER BY RowNum
Option2: Use
Offset
and
Fetch
SELECT l.LocationID,
l.Code,
l.Name,
l.ParentLocationID ,
lt.Code AS LocationTypeCode,
lt.Rank
FROM
Location l INNER JOIN HierarchyP h ON l.LocationID = h.LocationID
INNER JOIN LocationType lt ON lt.LocationTypeID = l.LocationTypeID
WHERE ((ISNULL(@SearchLocationText,'') = '')
OR (l.LocationTypeID <> @SearchLocationType)
OR (l.LocationTypeID = @SearchLocationType AND l.Name LIKE '%' + @SearchLocationText + '%'))
ORDER BY l.LocationID ASC
OFFSET 5 ROWS
FETCH NEXT 5 ROWS ONLY
Note: Offset-Fetch only works SQLSrever 2012 on wards.