Bạn có thể thực hiện việc này bằng cách sử dụng CTE
và 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ề cơ bản, CTE đã tham gia mục và sự kiện và thêm một cột mới cho thợ cắt dây và được phân vùng trên item.ID. Đây là ảnh chụp màn hình của nó trông như thế nào. Từ đây, tôi chỉ chọn rNum =1, đây sẽ là ngày sự kiện tối đa cho mỗi item.id.