U kunt dit doen met behulp van een CTE
en 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
In principe heeft de CTE item en event samengevoegd en een nieuwe kolom toegevoegd voor rijnummer en gepartitioneerd op item.ID. Hier is een screenshot van hoe het eruit ziet. Vanaf hier selecteer ik gewoon rNum =1, wat de maximale evenementdatum zou moeten zijn voor elk item.id.