Klauzula OFFSET i FETCH w SQL 2012

14-Mar-2012

Od wersji SQL 2012 ORDER BY zostało powiększone o klauzulę OFFSET. Pozwala ono stronicować dane sortowane w okręlsonym porządku. Zobacz następujący przykład:

USE TEMPDB
 
CREATE TABLE TestNumber (ID INT)
 
DECLARE @i INT=0
WHILE @i<100
BEGIN
 SET @i+=1
 INSERT TestNumber VALUES (@i)
END
 
SELECT ID FROM TestNumber
ORDER BY ID
OFFSET 50  ROWS  FETCH NEXT 10 ROWS ONLY
 

W testowej tabelce jest 100 rekordów (liczby ID od 1 do 100). SELECT wyświetli tylko rekordy od 51 do 60:

  • OFFSET mówi, że 50 pierwszych rekordów należy pominąć
  • FETCH mówi ile tych rekordów należy pobrać.

Element FETCH można pominąć.

Dodaj komentarz:

Autor: Rafał Kraik