radnummer bör vara tillräckligt för dina behov.
Obs! Jag antar att kolumnen Datum är en datatyp för sann datum eller datum och inte en sträng i den form du har visat. Om det antagandet är fel skulle ytterligare strängmanipulation behövas för att konvertera Date till ett sorterbart format.
;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