Můžete to udělat pomocí CTE
a 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
V zásadě CTE spojil položku a událost a přidal nový sloupec pro číslo řádku a je rozdělen na item.ID. Zde je snímek obrazovky, jak to vypadá. Odtud jen vyberu rNum =1, což by mělo být maximální datum události pro každou položku item.id.