Zapytanie SQL, aby znaleźć najnowszą grupę rekordów
Mam historię rekordów (wiele rekordów na aktualizację z dokładnie taką samą datą), które współdzieląIdString
.
Chcę, aby zapytanie określało, które z tych rekordów są częścią najnowszej grupy aktualizacji.
To zapytanie pokaże mijeden z rekordów o ostatniej dacie aktualizacji, aledla każdej partycji potrzebuję wszystkich rekordów z tą maksymalną datą.
;with cte as(
select ROW_NUMBER() over (partition by IdString order by UpdateDate desc) as [rn], *
from MyTable
)
select CASE WHEN (cte.rn = 1) THEN 0 ELSE 1 END [IsOld], *
from MyTable m
inner join cte on cte.RecordId= m.RecordId
Czy ktoś mógłby mi pomóc w znalezieniu odpowiedniego zapytania?
EDYCJA: Próbka
(IsOld is the desired calculated value)
IsOld RecordId IdString UpdateDate
1 1 ABC 2011-06-16
1 2 ABC 2012-05-30
1 3 ABC 2008-12-31
0 4 ABC 2012-06-08
1 5 ABC 2011-01-16
0 6 ABC 2012-06-08
1 7 ABC 2012-06-07
1 8 XYZ 2001-01-16
1 9 XYZ 2013-01-30
0 10 XYZ 2001-01-31
1 11 XYZ 2013-06-01
1 12 XYZ 2001-05-04
0 13 XYZ 2013-01-30