;WITH cte AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY DocumentID ORDER BY DateCreated DESC) AS rn
FROM DocumentStatusLogs
)
SELECT *
FROM cte
WHERE rn = 1
Jika Anda mengharapkan 2 entri per hari, maka ini akan secara sewenang-wenang memilih satu. Untuk mendapatkan kedua entri selama sehari, gunakan DENSE_RANK sebagai gantinya
Untuk dinormalisasi atau tidak, itu tergantung apakah Anda ingin:
- pertahankan status di 2 tempat
- menjaga riwayat status
- ...
Seperti berdiri, Anda mempertahankan riwayat status. Jika Anda juga menginginkan status terbaru di tabel induk (yang merupakan denormalisasi), Anda memerlukan pemicu untuk mempertahankan "status" di induk. atau jatuhkan tabel riwayat status ini.