Em questão de performance o row_number() é extremamente mais eficaz.

Falei sobre isso neste post:
http://bancotunado.blogspot.com.br/2012/03/o-destruidor-where-rownum-valor.html

Abraço moçada.

Evandro Giachetto
Oracle DBA Sr at UOL Diveo Corp.
evandrogiache...@gmail.com


Em 2 de abril de 2012 11:53, Eduardo Rodrigues <oraedua...@gmail.com>escreveu:

> **
>
>
> Bom dia, Carlos
>
> Eu recomendo o uso do row_number(). O exemplo do Nino pode te ajudar
> abastante.
> *Eduardo Rodrigues*
>
> Em 2 de abril de 2012 11:25, Nino <ninoba...@gmail.com> escreveu:
>
>
> > eu tenho algo parecido com o que vc ta precisando, acho que é só dar uma
> > adaptada pras suas tabelas, olha esse select:
> >
> > SELECT * FROM (
> > SELECT salesrep_id, creation_date, header_id_origi, ROW_NUMBER()
> > OVER (
> > PARTITION BY salesrep_id ORDER BY creation_date DESC
> > ) Top3 FROM xtim_cn_agrupa_transacao
> > )
> > WHERE Top3 <= 3
> > /
> >
> > ele pega as 3 ultimas transacoes por ponto de venda (salesrep_id)
> >
> >
> >
> >
> >
> > On Mon, Apr 2, 2012 at 6:42 AM, Carlos Eduardo Goncalves <
> > cegoncalve...@yahoo.com.br> wrote:
> >
> > > **
> > >
> > >
> > > itent_pro.cd_produto = codigo do produto.
> > >
> > > cada linha é uma entrada de NF no meu estoque, sim!
> > >
> > > ex:
> > > Fornecedor: Produto: Vl.total Dt.entrada
> > > Imex AS 45,00 26/03/2012
> > > Amei AS 55,00 20/04/2011
> > > Corpho AS 56,00 01/02/2011
> > >
> > > Isso, para cada produto.
> > >
> > > Cada linha a cima é uma entrada de NF que ocorreu.
> > > Preciso mostrar as 03 ultimas entradas de cada produto.
> > >
> > > Entendeu?
> > >
> > > De: Milton Bastos Henriquis Jr. <miltonbas...@gmail.com>
> > > Para: oracle_br@yahoogrupos.com.br
> > > Enviadas: Segunda-feira, 2 de Abril de 2012 10:28
> > > Assunto: Re: [oracle_br] Mostrar as 03 ultimas entradas dos produtos no
> > > estoque
> > >
> > > Ah, me perdoe, vc não tinha explicado esse detalhe, disse apenas "3
> > últimas
> > > entradas dos produtos", e não de cada produto...
> > > E como a gente não sabe absolutamente nada do teu negócio, fica mais
> > > difícil.
> > >
> > > Dá uma esclarecida pra ajudar o pessoal... o que é "cada produto" pra
> vc?
> > > É o campo itent_pro.cd_produto ?
> > >
> > > E o que significa "Cada entrada"?
> > > Cada linha do retorno desse seu select é uma "entrada"?
> > >
> > > On Mon, Apr 2, 2012 at 10:21 AM, Carlos Eduardo Goncalves <
> > > cegoncalve...@yahoo.com.br> wrote:
> > >
> > > > **
> > > >
> > > >
> > > >
> > > >
> > > > Milton!
> > > >
> > > > com a sua orientação, o select Trouxe 03 ultimas entradas do geral.
> > > > Não mostrou as 03 ultimas entradas de cada produto
> > > > Preciso mostrar as 03 ultimas entradas de cada produto...
> > > >
> > > > De: Milton Bastos Henriquis Jr. <miltonbas...@gmail.com>
> > > > Para: oracle_br@yahoogrupos.com.br
> > > > Enviadas: Segunda-feira, 2 de Abril de 2012 10:13
> > > > Assunto: Re: [oracle_br] Mostrar as 03 ultimas entradas dos produtos
> no
> > > > estoque
> > > >
> > > >
> > > > SELECT *
> > > > FROM ( *** COLE aqui todo o seu select,
> > > > que pelo que entendi já está ordenado ***)
> > > > WHERE ROWNUM < 4;
> > > >
> > > > On Mon, Apr 2, 2012 at 10:03 AM, Carlos Eduardo
> > > > <cegoncalve...@yahoo.com.br>wrote:
> > > >
> > > > > **
> > > >
> > > > >
> > > > >
> > > > > Amigos, bom dia!
> > > > >
> > > > > preciso mostrar as 03 ultimas entradas dos produtos no meu estoque,
> > > estou
> > > > > com dificuldade de conseguir exibir somente as 03 ultimas entradas.
> > > > > O select ja esta pronto:
> > > > >
> > > > > select
> > > > > fornecedor.nm_fornecedor,
> > > > > itent_pro.cd_produto,
> > > > > produto.ds_produto,
> > > > > verif_ds_unid_prod(produto.cd_produto) ds_unidade,
> > > > > vl_unitario,
> > > > > sum( itent_pro.qt_entrada * uni_pro.vl_fator /
> > > > > verif_vl_fator_prod(produto.cd_produto))qt_entrada,
> > > > > sum( nvl( itent_pro.vl_total_custo_real , 0) ) vl_total ,
> > > > > dt_entrada
> > > > >
> > > > > FROM dbamv.tip_doc,
> > > > > dbamv.fornecedor,
> > > > > dbamv.produto,
> > > > > dbamv.uni_pro,
> > > > > dbamv.ent_pro,
> > > > > dbamv.itent_pro,
> > > > > dbamv.estoque
> > > > >
> > > > > WHERE ent_pro.cd_ent_pro = itent_pro.cd_ent_pro
> > > > > AND ent_pro.cd_fornecedor = fornecedor.cd_fornecedor
> > > > > --AND fornecedor.tp_cliente_forn in ( 'F', 'A', 'R', 'T' )
> > > > > AND ent_pro.cd_estoque = estoque.cd_estoque
> > > > > AND ent_pro.cd_tip_doc = tip_doc.cd_tip_doc
> > > > > AND itent_pro.cd_produto = produto.cd_produto
> > > > > AND itent_pro.cd_uni_pro = uni_pro.cd_uni_pro
> > > > > and produto.cd_produto = 204
> > > > > AND ent_pro.dt_entrada between to_date ('01/01/2011') AND to_date
> > > > > ('31/03/2012')
> > > > > AND ent_pro.cd_fornecedor is not null
> > > > > AND Estoque.Cd_Multi_Empresa = 1
> > > > > and tip_doc.cd_tip_doc=1
> > > > > and produto.cd_especie = 1
> > > > > group by
> > > > > fornecedor.cd_fornecedor,
> > > > > fornecedor.nm_fornecedor,
> > > > > itent_pro.cd_produto,
> > > > > produto.ds_produto,
> > > > > verif_ds_unid_prod(produto.cd_produto),
> > > > > vl_unitario, dt_entrada
> > > > >
> > > > > order by dt_entrada desc, cd_produto, nm_fornecedor
> > > > >
> > > > > Tabela/Campos
> > > > >
> > > > > Preciso mostrar as 03 ultimas Entradas dos Produtos, alguem poderia
> > me
> > > > > ajudar?
> > > > >
> > > > > Obg!
> > > > >
> > > > >
> > > > >
> > > >
> > > > --
> > > > Att,
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > > > ------------------------------------
> > > >
> > > >
> > > > ----------------------------------------------------------
> > > > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> > > > inteira responsabilidade de seus remetentes.
> > > > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> > > > ----------------------------------------------------------
> > > > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> > > > Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO
> > > ESPAÇO!
> > > > VISITE: http://www.oraclebr.com.br/
> > > > ---------------------------------------------------------- Links do
> > > Yahoo!
> > > > Grupos
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > > >
> > > >
> > >
> > > --
> > > Att,
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > > ------------------------------------
> > >
> > > ----------------------------------------------------------
> > > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> > > inteira responsabilidade de seus remetentes.
> > > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> > > ----------------------------------------------------------
> > > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> > > Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO
> > ESPAÇO!
> > > VISITE: http://www.oraclebr.com.br/
> > > ---------------------------------------------------------- Links do
> > Yahoo!
> > > Grupos
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ------------------------------------
> >
> >
> > ----------------------------------------------------------
> > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> > inteira responsabilidade de seus remetentes.
> > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> >
> > ----------------------------------------------------------
> > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> > Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO
> ESPAÇO!
> > VISITE: http://www.oraclebr.com.br/
> > ----------------------------------------------------------
> > Links do Yahoo! Grupos
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a