27/11/2006

ORDER BY personalizado

PessoALL,

Tenho os seguintes dados:

SELECT nome
FROM Animais


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

Mas gostaria que sempre fosse listado com a seguinte ordem:

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.

SELECT nome
FROM Animais
INNER JOIN OrdemAnimais OA
  ON OA.nome = Animais.nome
ORDER BY OA.ordem


Abraços,


Tinorj

Respostas

02/12/2006

Psergio.p

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


Responder Citar

02/12/2006

Psergio.p

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?


Responder Citar

04/12/2006

Tinorj

Havia esquecido do ´bom´ e velho CASE.

Valeu por lembrar...


Responder Citar