Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Ajuda rápida usando RANK em várias variáveis


row_number deve ser suficiente para suas necessidades.

Observação:estou assumindo que sua coluna Date é um tipo de dados Date ou DateTime verdadeiro e não uma string no formulário que você mostrou. Se essa suposição estiver errada, alguma manipulação de string adicional seria necessária para converter Date em um formato classificável.
;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