Используйте этот запрос для фильтрации по той же таблице по идентификатору и дате последнего изменения.
SELECT
T.*
FROM
[MyServer].[Database].[Table] AS T
INNER JOIN (
select Id,
MAX(LastModifiedDate) AS MaxLastModifiedDate
FROM [MyServer].[Database].[Table]
group by Id
) AS N ON
T.Id = N.Id AND
N.MaxLastModifiedDate = T.LastModifiedDate
РЕДАКТИРОВАТЬ : Если у вас есть несколько максимальных дат для каждого идентификатора, вы не можете использовать их значение для фильтрации. Вместо них вы можете использовать ROW_NUMBER
для ранжирования:
;WITH MaxByRowNumber AS
(
SELECT
T.*,
LastModifiedDateRanking = ROW_NUMBER() OVER (PARTITION BY T.ID ORDER BY T.LastModifiedDate DESC)
FROM
[MyServer].[Database].[Table] AS T
)
SELECT
M.*
FROM
MaxByRowNumber AS M
WHERE
M.LastModifiedDateRanking = 1
Возможно, вы захотите добавить еще один столбец к ORDER BY
, чтобы отвязать самые последние обновленные даты, или нет, в зависимости от ваших потребностей.