Ajuda com ordenação com oracle

Delphi

20/03/2008

Pessoal bom dia!!!

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

Cristianojedi

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

20/03/2008

inverta - se possível - as posições de [i:407e6f3385]tomo[/i:407e6f3385] e [i:407e6f3385]exemp[/i:407e6f3385] no order by.

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
Cristianojedi

Cristianojedi

20/03/2008

Emerson,

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
POSTAR