Du kan gøre dette ved at bruge en CTE
og 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
Grundlæggende har CTE sluttet sig til element og begivenhed og tilføjet en ny kolonne for rækkenummer og er opdelt på item.ID. Her er et skærmbillede af, hvordan det ser ud. Herfra vælger jeg bare rNum =1, som skal være den maksimale begivenhedsdato for hvert item.id.