Można użyć OVER
klauzuli i rankingową funkcję. Nie możesz filtrować bezpośrednio, więc potrzebujesz do nas zapytania dodatkowego lub wspólnego wyrażenia tabelowego, poniższy przykład używa tego drugiego.
DECLARE @MyTable TABLE
(
ID INT,
Name VARCHAR(15)
)
INSERT INTO @MyTable VALUES (1, 'Alice')
INSERT INTO @MyTable VALUES (2, 'Bob')
INSERT INTO @MyTable VALUES (3, 'Chris')
INSERT INTO @MyTable VALUES (4, 'David')
INSERT INTO @MyTable VALUES (5, 'Edgar')
;WITH people AS
(
SELECT ID, Name, ROW_NUMBER() OVER (ORDER BY ID) RN
FROM @MyTable
)
SELECT ID, Name
FROM people
WHERE RN > 1
Nie będzie lepsze wsparcie dla paginacji w następnej wersji SQL Server (nazwa kodowa Denali) z OFFSET
i FETCH
słów kluczowych.
Świetnie ... nie myślałem w tym kierunku. Próbowałem wybrać top 5, a następnie próbowałem pominąć pierwszy ze słowem "pomiń" ... Wielkie dzięki ... :-) –
+1 za wzmiankę o funkcji rankingowej - dzięki temu jest to równomierne bardziej przydatna odpowiedź: – Sascha
+1 dla informacji "OFFSET" i "FETCH" .. – dotNETbeginner