row_number sẽ đủ cho nhu cầu của bạn.
Lưu ý:Tôi giả sử cột Ngày của bạn là kiểu dữ liệu Ngày hoặc DateTime thực sự và không phải là một chuỗi ở dạng bạn đã hiển thị. Nếu giả định đó là sai, sẽ cần một số thao tác chuỗi bổ sung để chuyển Ngày thành định dạng có thể sắp xếp.
;with cteRowNumber as (
select Date, ProductID, Year, Price,
row_number() over (partition by ProductID, Year order by Date desc) as RowNum
from YourTable
)
select Date, ProductID, Year, Price
from cteRowNumber
where RowNum = 1