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 № 1Ao 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.