row_number आपकी आवश्यकताओं के लिए पर्याप्त होना चाहिए।
नोट:मुझे लगता है कि आपका दिनांक कॉलम एक वास्तविक दिनांक या दिनांक समय डेटाटाइप है और आपके द्वारा दिखाए गए फॉर्म में एक स्ट्रिंग नहीं है। यदि यह धारणा गलत है, तो दिनांक को क्रमबद्ध प्रारूप में बदलने के लिए कुछ अतिरिक्त स्ट्रिंग हेरफेर की आवश्यकता होगी।
;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