Вы можете использовать предложение OVER
и функцию ранжирования. Вы не можете фильтровать это напрямую, поэтому вам нужен подзапрос или общее табличное выражение, в приведенном ниже примере используется последнее.
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
Будет улучшена поддержка разбиения на страницы в следующей версии SQL Server (кодовое имя Denali) с ключевыми словами OFFSET
и FETCH
.