Как найти идентификатор повторяющихся записей в SQL SERVER 2005 - PullRequest
0 голосов
/ 06 января 2011

Запись таблицы содержит следующие данные. Некоторые записи дублируются. Повторяющиеся критерии - это те же NoOfEntry и TypeOfEntry. Из записи, которая имеет такие же NoOfEntry и TypeOfEntry, я хочу EntryId записи, которая имеет min (dateOfEntry).

Например, у нас есть 3 повторяющихся записи для T1, я хочу запись с EntryID 1001, как она была введена первой (минимум DateOfEntry).

alt text

1 Ответ

1 голос
/ 06 января 2011

Попробуйте CTE (Common Table Expression) с функцией ранжирования ROW_NUMBER:

;WITH duplicates AS
(
    SELECT 
       EntryID, DateOfEntry
       ROW_NUMBER() OVER (PARTITION BY NoOfEntry,TypeOfEntry
                          ORDER BY DateOfEntry DESC) 'RowNum'
    FROM dbo.Enty
)
SELECT EntryID FROM duplicates
WHERE RowNum > 1
GO

CTE "разделит" ваши данные на (NoOfEntry,TypeOfEntry) и начнет присваивать порядковые номера (1, 2, 3, .....) каждой строке для каждой группы этих двух столбцов.

Любая строка, имеющая RowNum > 1, является дубликатом на основе (NoOfEntry,TypeOfEntry)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...