Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Schnelle Hilfe bei der Verwendung von RANK über mehrere Variablen

Zeilennummer sollte für deine anforderungen ausreichen.

Hinweis:Ich gehe davon aus, dass Ihre Date-Spalte ein echter Date- oder DateTime-Datentyp ist und keine Zeichenfolge in der von Ihnen gezeigten Form. Wenn diese Annahme falsch ist, wäre eine zusätzliche String-Manipulation erforderlich, um Date in ein sortierbares Format umzuwandeln.

;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