ORDER BY personalizado
PessoALL,
Tenho os seguintes dados:
[list:bd4256ea08]Cachorro
Pato
Tatu
Égua[/list:u:bd4256ea08]
Mas gostaria que sempre fosse listado com a seguinte ordem:
[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.
Abraços,
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
Curtidas 0
Respostas
Psergio.p
27/11/2006
Caro amigo, você pode usar CASE para fixar valores no ORDER BY.
GOSTEI 0
Psergio.p
27/11/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?
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?
GOSTEI 0
Tinorj
27/11/2006
Havia esquecido do ´bom´ e velho CASE.
Valeu por lembrar...
Valeu por lembrar...
GOSTEI 0