;WITH cte AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY DocumentID ORDER BY DateCreated DESC) AS rn
FROM DocumentStatusLogs
)
SELECT *
FROM cte
WHERE rn = 1
Hvis du forventer 2 tilmeldinger om dagen, vil dette vilkårligt vælge en. For at få begge poster for en dag, brug DENSE_RANK i stedet
Hvad angår normaliseret eller ej, afhænger det af, om du vil:
- oprethold status 2 steder
- bevar statushistorik
- ...
Som den står, bevarer du statushistorik. Hvis du også vil have den seneste status i den overordnede tabel (som er denormalisering), skal du bruge en trigger for at bevare "status" i forælderen. eller slip denne statusoversigtstabel.