/ / Ordenação personalizada em Max () - sql, sql-server-2005, max

Encomenda personalizada em Max () - sql, sql-server-2005, max

Suponha que eu tenha uma tabela "coisas" que tenha uma coluna "ranking". Existem 5 registros com os valores Primeiro, Segundo, Terceiro, Quarto e Quinto na coluna de classificação.

Eu quero poder usar

select Max(ranking) from things

para retornar "Fifth", em vez de seu padrão "Third".

Além disso, gostaria que o quarto fosse considerado maior que o terceiro, etc.

Como posso fazer isso?

SQL Server 2005

Respostas:

1 para resposta № 1

Ao invés de usar max(ranking), Eu sugeriria:

select top 1 ranking
from things
order by ranking desc;

Isso não resolve o seu problema, mas aponta para uma boa direção. Basta usar um case declaração no order by:

select top 1 ranking
from things
order by (case ranking
when "First" then 1
when "Second" then 2
when "Third" then 3
when "Fourth" then 4
when "Fifth" then 5
end) desc;

Você também pode fazer essa pesquisa usando uma tabela auxiliar ou subconsulta.


3 para resposta № 2

Você precisará ter uma tabela de pesquisa separada para vincular esses valores a um valor numérico que pode ser solicitado por.