Array
(
)

ORDER BY personalizado

Tinorj
   - 27 nov 2006

PessoALL,

Tenho os seguintes dados:

#Código

SELECT nome
FROM Animais


[list:bd4256ea08]Cachorro
Pato
Tatu
Égua[/list:u:bd4256ea08]

Mas gostaria que sempre fosse listado com a seguinte ordem:

#Código
SELECT nome
FROM Animais
ORDER BY ??????


[list:bd4256ea08]Pato
Tatu
Cachorro
Égua[/list:u:bd4256ea08]

Já encontrei uma solução que indica usar uma tabela auxiliar especificando a ordem, mas gostaria de saber se tem uma solução mais inteligente.

#Código
SELECT nome
FROM Animais
INNER JOIN OrdemAnimais OA
  ON OA.nome = Animais.nome
ORDER BY OA.ordem


Abraços,

Psergio.p
   - 02 dez 2006

Caro amigo, você pode usar CASE para fixar valores no ORDER BY.

Psergio.p
   - 02 dez 2006

Veja o exemplo abaixo:

SELECT Nome FROM Animais
ORDER BY
CASE
WHEN Nome = ´Pato´ THEN CHAR(1)
WHEN Nome = ´Tatu´ THEN CHAR(2)
WHEN Nome = ´Cachorro´ THEN CHAR(3)
WHEN Nome = ´Égua´ THEN CHAR(4)
ELSE Nome END

É isso que você precisa?

Tinorj
   - 04 dez 2006

Havia esquecido do ´bom´ e velho CASE.

Valeu por lembrar...