Espero que o e-mail não tire toda a formatação... vamos ver se fica legível.
Veja se é isso que vc quer. Tabela que criei com alguns dados, pra fazer o teste: select tv_data, tv_produto, tv_valor from teste_vendas; 23/05/2012 1 10,00 22/05/2012 1 9,50 22/05/2012 2 5,00 21/05/2012 2 8,00 01/05/2012 2 2,00 02/05/2012 3 50,00 04/05/2012 3 60,00 14/05/2012 3 65,00 Select que entendi que é o que vc deseja, confira se é isso mesmo: select * from teste_vendas where (tv_data, tv_produto) in ( select max(tv_data), tv_produto from teste_vendas group by tv_produto); 23/05/2012 1 10,00 22/05/2012 2 5,00 14/05/2012 3 65,00 Ou seja, trouxe agrupado por produto, trazendo sempre o valor do registro que contém a data mais recente. Estou muito enferrujado em SQL, não lerei em consideração a performance. Se algum colega souber como melhorar essa query, fiquem a vontade pra me corrigir. 2012/5/23 Bruno Banfi <bruno.ba...@yahoo.com.br> > ** > > > Só coloquei o campo EST_CUST_UND no group by para tentar explicar para > vocês o que estava tentando fazer. > > Ok Milton, aguardo seu exemplo, muito obrigado. > > > ________________________________ > De: Milton Bastos Henriquis Jr. <miltonbas...@gmail.com> > Para: oracle_br@yahoogrupos.com.br > Enviadas: Quarta-feira, 23 de Maio de 2012 16:29 > > Assunto: Re: [oracle_br] Help no Script > > Sim, nós sabemos disso... rs... > > A questão é que vc não pode alterar a lógica do teu select pra ele "rodar", > ou seja, adicionar um campo no group by apenas > pra não dar erro de compilação. Alterou a lógica, e daí realmente não vai > retornar o que vc espera. > > Basta vc trabalhar com subselects, por exemplo, isso pensando de maneira > mais fácil e sem pensar em performance. > > Rafael: o e-mail que vc acabou de mandar está errado. > Ele não quer apenas a ultima data. > Ele quer a última data DE CADA PRODUTO. > > Bruno, assim que tiver um tempinho eu te colo um exemplo. > Não tenho dados aqui na minha base pra testar esse select, vou tentar gerar > um pouco de dados pra simular teu caso. > Mas é muito fácil de fazer, basta usar subselect. > > 2012/5/23 Bruno Banfi <bruno.ba...@yahoo.com.br> > > > ** > > > > > > > Milton, fiz dessa maneira porque não é possivel dar um Select na coluna e > > não colocar no group by. > > > > Não posso fazer isso, da erro: > > > > SELECT MAX(I.EST_DATA_ENTRADA) DATA_ENTRADA, I.EST_FK_EPI, I.EST_CUST_UND > > from ESTOQUE as I > > Group by I.EST_FK_EPI > > > > > > ________________________________ > > De: Milton Bastos Henriquis Jr. <miltonbas...@gmail.com> > > Para: oracle_br@yahoogrupos.com.br > > Enviadas: Quarta-feira, 23 de Maio de 2012 15:53 > > > > Assunto: Re: [oracle_br] Help no Script > > > > Sim, vc fez errado! > > > > Vc colorou o campo VALOR no group by. > > É por isso que aparecem dois valores diferentes pro mesmo produto - foi > vc > > mesmo que mandou que ficasse assim. > > > > Eu já imaginei que tivesse esse erro, por isso coloquei aquele > comentário. > > > > Se vc quer apenas da data mais recente, mande agrupas apenas pelo > produto, > > daí pegue a data mais recente usando o MAX, e por fim pegue o valor do > > produto naquela data. > > > > 2012/5/23 Bruno Banfi <bruno.ba...@yahoo.com.br> > > > > > ** > > > > > > > > > > > Milton, > > > > > > Veja que no resultado aparece dois valores para o mesmo produto mas com > > > datas diferentes: > > > > > > > > > > 2011-09-28 2 0.65 > > > > 2012-05-16 2 0.69 > > > > > > Na minha consulta precisa aparecer o valor do produto com a data mais > > > recente. Nesse caso acima era para aparecer somente: > > > > > > 2012-05-16 2 0.69 > > > > > > Não deu certo o que o Rafael sugeriu. Vou revisar para ver se estou > > > fazendo alguma coisa errada. > > > > > > Obrigado pelo retorno. > > > > > > Bruno > > > > > > ________________________________ > > > De: Milton Bastos Henriquis Jr. <miltonbas...@gmail.com> > > > Para: oracle_br@yahoogrupos.com.br > > > Enviadas: Quarta-feira, 23 de Maio de 2012 15:27 > > > Assunto: Re: [oracle_br] Help no Script > > > > > > > > > Sobre a sugestão do Rafael, importante lembrar que: > > > Se for usar rownum, tem que usar subselect também. > > > > > > Bruno: tenho quase certeza que vc não explicou corretamente o que vc > > > realmente deseja. > > > > > > Essa query que vc passou, ela está CORRETA e vc deseja extrair essa > > > informação dela? > > > Ou ela está ERRADA e vc deseja corrigi-la? > > > > > > Se ela estiver correta, pra extrair exatamente o que vc descreveu, é > > > fácil... > > > Sem fazer muita alteração e usando a dica do Rafael: > > > > > > Select DATA_ENTRADA, EST_CUST_UND > > > from ( > > > SELECT MAX(I.EST_DATA_ENTRADA) DATA_ENTRADA, > I.EST_FK_EPI,I.EST_CUST_UND > > > from ESTOQUE as I, EPI as H > > > INNER JOIN ESTOQUE ON EST_FK_EPI = H.EPI_ID > > > Group by I.EST_FK_EPI, I.EST_CUST_UND > > > order by MAX(I.EST_DATA_ENTRADA)) > > > where rownum = 1; > > > > > > Mas tenho o leve pressentimento que não é isso que vc quer... que > talvez > > vc > > > queira refazer > > > a query, mudar esse agrupamento, mas nesse caso só dá pra te ajudar se > vc > > > realmente explicar melhor. > > > > > > 2012/5/23 Rafael Vieira <vieira.rafae...@yahoo.com.br> > > > > > > > ** > > > > > > > > > > > > > > > Tenta colocar a cláusula having fazendo uma condição data = > max(data), > > pq > > > > o having aceita um filtro com agrupamento, ou então, faria uma > > > "gamb",order > > > > by data desc e colocaria um rownum = 1 > > > > > > > > ________________________________ > > > > De: Bruno Banfi <bruno.ba...@yahoo.com.br> > > > > Para: "oracle_br@yahoogrupos.com.br" <oracle_br@yahoogrupos.com.br> > > > > Enviadas: Quarta-feira, 23 de Maio de 2012 14:56 > > > > Assunto: [oracle_br] Help no Script > > > > > > > > > > > > > > > > Boa tarde a todos, > > > > > > > > Tenho o seguinte script: > > > > > > > > SELECT MAX(I.EST_DATA_ENTRADA) as 'DATA_ENTRADA', > > > > I.EST_FK_EPI,I.EST_CUST_UND > > > > from ESTOQUE as I, EPI as H > > > > INNER JOIN ESTOQUE ON EST_FK_EPI = H.EPI_ID > > > > Group by I.EST_FK_EPI, I.EST_CUST_UND > > > > ORDER BY I.EST_FK_EPI > > > > > > > > Que da o seguinte resultado: > > > > > > > > EST_DATA_ENTRADA EST_FK_EPI EST_CUST_UND > > > > 2012-03-28 NULL 23.00 > > > > 2011-09-28 2 0.65 > > > > 2012-05-16 2 0.69 > > > > 2012-05-16 4 1.55 > > > > 2011-09-28 59 3.05 > > > > 2011-10-27 77 3.75 > > > > 2012-02-17 77 3.05 > > > > 2011-09-30 79 2.25 > > > > 2012-02-17 97 2.25 > > > > 2011-09-30 99 22.14 > > > > 2011-09-30 121 7.56 > > > > 2011-09-30 139 46.00 > > > > 2012-02-17 140 16.50 > > > > 2012-02-17 144 3.71 > > > > 2011-09-30 144 6.55 > > > > 2012-05-16 161 3.71 > > > > 2011-09-30 161 3.70 > > > > > > > > O resultado que preciso trazer é o valor (EST_CUST_UND) com a data > > > > (EST_DATA_ENTRADA) mais recente. > > > > > > > > Muito obrigado, > > > > > > > > Bruno > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > [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] > > > > > > > > > > > > > -- > > 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] > > > -- 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 <*> 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