вторник, 9 июля 2013 г.

Как осуществить постраничный вывод строк (OFFSET- FETCH)

SQL Server 2012 и выше

DECLARE @Offset INT = 0 -- Сдвиг
DECLARE @Qty INT = 10 -- Количество строк

SELECT
    [BusinessEntityID]
    ,[FirstName]
    ,[LastName]
FROM
    [AdventureWorks2012].[Person].[Person]
ORDER BY -- Порядок для сдвига и отбора
    [BusinessEntityID]
OFFSET @Offset ROWS  -- Сдвиг: 0
FETCH NEXT @Qty ROWS ONLY -- Количество строк: 10


SET @Offset += 10 -- Увеличим сдвиг на 10

SELECT
    [BusinessEntityID]
    ,[FirstName]
    ,[LastName]
FROM
    [AdventureWorks2012].[Person].[Person]
ORDER BY -- Порядок для сдвига и отбора
    [BusinessEntityID]
OFFSET @Offset ROWS  -- Сдвиг: 10
FETCH NEXT @Qty ROWS ONLY -- Количество строк: 10