/ / SQL Server - exibe a classificação da linha, dependendo da coluna - sql, sql-server, tsql, sql-server-2014

SQL Server - exibe a classificação da linha dependendo da coluna - sql, sql-server, tsql, sql-server-2014

Eu tenho uma consulta que retorna:

RowNumber     Name
===================================
1             Invoice-02116 (1).pdf
1             Invoice-02116 (2).pdf
1             Invoice-02116.pdf
2             Invoice-02116.pdf
3             Invoice-02116.pdf
4             Invoice-02116.pdf
5             Invoice-02116.pdf

O que eu preciso é algo como:

RowNumber     Name
===================================
1             Invoice-02116 (1).pdf
2             Invoice-02116 (2).pdf
3             Invoice-02116.pdf
3             Invoice-02116.pdf
3             Invoice-02116.pdf
3             Invoice-02116.pdf
3             Invoice-02116.pdf

Mais exatamente, para exibir a classificação, dependendo da coluna do nome.

O que estou usando para a coluna RowNumber é:

SELECT ROW_NUMBER() OVER (PARTITION BY ff.Name ORDER BY ff.Name) AS RowNumber, ff.Name

Respostas:

3 para resposta № 1

Usar DENSE_RANK em vez de :

SELECT DENSE_RANK() OVER (ORDER BY ff.Name) AS RowNumber...

2 para resposta № 2

Usar DENSE_RANK com uma ordem apropriada:

SELECT
DENSE_RANK() OVER (ORDER BY LEN(Name) DESC, Name) AS RowNumber,
Name
FROM yourTable;

Demonstração