;WITH cte AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY DocumentID ORDER BY DateCreated DESC) AS rn
FROM DocumentStatusLogs
)
SELECT *
FROM cte
WHERE rn = 1
Si espera 2 entradas por día, entonces elegirá una arbitrariamente. Para obtener ambas entradas para un día, use DENSE_RANK en su lugar
En cuanto a normalizarse o no, depende de si quieres:
- mantener el estado en 2 lugares
- preservar el historial de estado
- ...
Tal como está, conservas el historial de estado. Si también desea el estado más reciente en la tabla principal (que es la desnormalización), necesitará un disparador para mantener el "estado" en la tabla principal. o suelte esta tabla de historial de estado.