Sie können dies mit einem CTE
tun und 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
Grundsätzlich hat der CTE Artikel und Ereignis zusammengefügt und eine neue Spalte für die Zeilennummer hinzugefügt und ist nach Artikel.ID partitioniert. Hier ist ein Screenshot, wie es aussieht. Von hier aus wähle ich einfach rNum =1 aus, was das maximale Ereignisdatum für jede item.id sein sollte.