Rafael, vc está caindo numa das mais clássicas FAQs do RDBMS Oracle : o que acontece é que o ROWNUM é atribuído ANTES da Ordenação, aí fica fora de ordem, okdoc ? O correto é vc usar : SELECT * FROM (SELECT desejado ORDER BY o que vc quer) WHERE ROWNUM < limitador
okdoc ?? Entre n+1! outros lugares, isso é citado em http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html (a melhor fonte, imho) mas também no FAQ semi-oficial em http://www.orafaq.com/wiki/ROWNUM e em http://www.dbforums.com/oracle/988716-rownum-order.html . é ultra-conhecida... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Raphael Franco <phadba@...> escreveu > > > > Oracle 10g SE R2 > > > Pessoal porque não gravam os mesmos dados na tabela que o select ?? > Insiro isso: > > > insert into as_vinte_maiores_tab > select segment_name, object_type, a.owner, tamanho, > tablespace_name,sysdate data > from (select rownum, segment_name, owner,tablespace_name, > sum(bytes/1024/1024) Tamanho > from dba_segments group by rownum, segment_name, owner,tablespace_name > order by sum(bytes/1024/1024) desc) a, > dba_objects b > where a.segment_name = b.object_name > and rownum < 20; > > > > Porém o resultado de: > > select * from as_vinte_maiores_tab; > > são diferentes de: > > > select segment_name, object_type, a.owner, tamanho, > tablespace_name,sysdate data > from (select rownum, segment_name, owner,tablespace_name, > sum(bytes/1024/1024) Tamanho > from dba_segments group by rownum, segment_name, owner,tablespace_name > order by sum(bytes/1024/1024) desc) a, > dba_objects b > where a.segment_name = b.object_name > and rownum < 20; > > > > att. > Phael > > > [As partes desta mensagem que não continham texto foram removidas] >