Fórum Ajuda com ordenação com oracle #355702
20/03/2008
0
Tenho o seguinte select:
SELECT r.unidade, r.reg_old, r.codigo, r.vol, r.patrimonio, r.exemp, r.dt_reg, r.tomo FROM registro r, acervo a WHERE r.codpub = a.codigo AND a.codigo = 94049 ORDER BY unidade, vol, tomo, exemp
Esse select me retorna o seguinte resultado:
UNIDADECODIGOVOLEXEMPDT_REGTOMO BC 165013 2 03/12/2007 1 BC 165015 3 03/12/2007 1 BC 165005 3 2 03/12/2007 2 BC 165006 3 3 03/12/2007 2 BC 165014 3 03/12/2007 2
Reparem que a ordenação é por unidade, vol, tomo, exemp.
Quero que o código 165014 venha antes do código 165005. Sei que está vindo assim porque o exemp do código 165014 esta vazio.
Como eu posso resolver isso?
Alguém pode me ajudar?
Estou usando Delphi 7 e Oracle 10g.
Obrigado
Cristianojedi
Curtir tópico
+ 0Posts
20/03/2008
Emerson Nascimento
SELECT r.unidade, r.reg_old, r.codigo, r.vol, r.patrimonio, r.exemp, r.dt_reg, r.tomo FROM registro r, acervo a WHERE r.codpub = a.codigo AND a.codigo = 94049 ORDER BY unidade, vol, exemp, tomo, codigo
o resultado será:
UNIDADE CODIGO VOL EXEMP DT_REG TOMO BC 165013 2 03/12/2007 1 BC 165015 3 03/12/2007 1 BC 165014 3 03/12/2007 2 BC 165005 3 2 03/12/2007 2 BC 165006 3 3 03/12/2007 2
o campo [i:407e6f3385]codigo[/i:407e6f3385] ao final da ordenação é opcional. ele se tornará útil somente se os valores dos demais campos da ordem forem iguais.
Gostei + 0
20/03/2008
Cristianojedi
Não posso reverter a ordenação. Mas consegui resolver da seguiten forma:
Order by:
ORDER BY unidade, coalesce(vol,´ ´), coalesce(tomo,´ ´), coalesce(exemp,´ ´)
No lugar de:
ORDER BY unidade, vol, tomo, exemp
De qualquer forma, muito obrigado.
Abs
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)