;WITH cte AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY DocumentID ORDER BY DateCreated DESC) AS rn
FROM DocumentStatusLogs
)
SELECT *
FROM cte
WHERE rn = 1
Als u 2 inzendingen per dag verwacht, wordt er willekeurig een gekozen. Gebruik in plaats daarvan DENSE_RANK
. om beide vermeldingen voor een dag te krijgenGenormaliseerd of niet, het hangt ervan af of je het volgende wilt:
- status behouden op 2 plaatsen
- statusgeschiedenis behouden
- ...
Zoals het er nu uitziet, bewaart u de statusgeschiedenis. Als je ook de laatste status in de bovenliggende tabel wilt (wat denormalisatie is), heb je een trigger nodig om de "status" in de bovenliggende tabel te behouden. of laat deze statusgeschiedenistabel vallen.