Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Aide rapide utilisant RANK sur plusieurs variables

numéro_ligne devrait suffire à vos besoins.

Remarque :Je suppose que votre colonne Date est un vrai type de données Date ou DateTime et non une chaîne dans le formulaire que vous avez montré. Si cette hypothèse est fausse, une manipulation de chaîne supplémentaire serait nécessaire pour convertir Date dans un format triable.

;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