Anda dapat melakukannya dengan menggunakan CTE
dan row_number()
.
;with cte as
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY i.id ORDER BY e.EventDate DESC) as rNum
FROM Item i
JOIN Event e
ON i.id between e.ItemStart and e.ItemEnd
)
SELECT ID,
Name,
EventType,
EventDate FROM cte
WHERE rNum = 1
Pada dasarnya CTE telah bergabung dengan item dan event dan menambahkan kolom baru untuk rownumber dan dipartisi pada item.ID. Berikut screenshot tampilannya. Dari sini saya tinggal pilih rNum =1 yang seharusnya menjadi tanggal acara maksimal untuk setiap item.id.