Re: [oracle_br] Help no Script
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 > ** > > > 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. > 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 > > > ** > > > > > > > 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. > > 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 > > > > > ** > > > > > > > > > > > Milton, > > > > > > Veja que no resultado aparece dois valores para o mesmo produto mas com > > > datas diferentes: > > > > > > > > > > 2011-09-282 0.65 > > > > 2012-05-162 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-162 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. > > > 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
Re: [oracle_br] Help no Script
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. 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 > ** > > > 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. > 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 > > > ** > > > > > > > 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. > > 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 > > > > > ** > > > > > > > > > > > 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 > > > Para: "oracle_br@yahoogrupos.com.br" > > > Enviadas: Quarta-feira
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 > ** > > > 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. > 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 > > > ** > > > > > > > Milton, > > > > Veja que no resultado aparece dois valores para o mesmo produto mas com > > datas diferentes: > > > > > > > 2011-09-282 0.65 > > > 2012-05-162 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-162 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. > > 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 > > > > > ** > > > > > > > > > > > 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 > > > Para: "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 &
Re: [oracle_br] Help no 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 having I.EST_DATA_ENTRADA = ( Select max(ESTOQUE .EST_DATA_ENTRADA) from ESTOQUE) ORDER BY I.EST_FK_EPI tenta assim bruno. De: Bruno Banfi Para: "oracle_br@yahoogrupos.com.br" Enviadas: Quarta-feira, 23 de Maio de 2012 16:15 Assunto: Re: [oracle_br] Help no Script 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. 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 > ** > > > 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. > 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 > > > ** > > > > > > > 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 > > Para: "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
Re: [oracle_br] Help no Script
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. 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 > ** > > > 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. > 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 > > > ** > > > > > > > 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 > > Para: "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
RE: [oracle_br] Help no Script
Bruno, tenta uma subquery dentro da clausula WHERE. At. To: oracle_br@yahoogrupos.com.br From: bruno.ba...@yahoo.com.br Date: Wed, 23 May 2012 11:47:17 -0700 Subject: Re: [oracle_br] Help no Script Milton, Veja que no resultado aparece dois valores para o mesmo produto mas com datas diferentes: > 2011-09-282 0.65 > 2012-05-162 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-162 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. 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 > ** > > > 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 > Para: "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-2859 3.05 > 2011-10-2777 3.75 > 2012-02-1777 3.05 > 2011-09-3079 2.25 > 2012-02-1797 2.25 > 2011-09-3099 22.14 > 2011-09-30121 7.56 > 2011-09-30139 46.00 > 2012-02-17140 16.50 > 2012-02-17144 3.71 > 2011-09-30144 6.55 > 2012-05-16161 3.71 > 2011-09-30161 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
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 > ** > > > Milton, > > Veja que no resultado aparece dois valores para o mesmo produto mas com > datas diferentes: > > > > 2011-09-282 0.65 > > 2012-05-162 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-162 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. > 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 > > > ** > > > > > > > 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 > > Para: "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_ENTRADAEST_FK_EPIEST_CUST_UND > > 2012-03-28NULL 23.00 > > 2011-09-282 0.65 > > 2012-05-162 0.69 > > 2012-05-164 1.55 > > 2011-09-28593.05 > > 2011-10-27773.75 > > 2012-02-17773.05 > > 2011-09-30792.25 > > 2012-02-17972.25 > > 2011-09-309922.14 > > 2011-09-30121 7.56 > > 2011-09-30139 46.00 > > 2012-02-17140 16.50 > > 2012-02-17144 3.71 > > 2011-09-30144 6.55 > > 2012-05-16161 3.71 > > 2011-09-30161 3.70 > > > > O resultado que preciso trazer é o valor (EST_CUST_UND) com a data > > (EST_DATA_ENTRADA) mais recente.
Re: [oracle_br] Help no Script
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. 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 > ** > > > 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 > Para: "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]
RE: [oracle_br] Help no Script
Boa tarde, Bruno! Você pode tentar também um subquery com o meu exemplo abaixo, para otimizá-la ainda mais você pode colar chaves primarias de ligações na subquery como não conheceu a tabela só posso chegar até aqui. SELECT I.EST_DATA_ENTRADA,I.EST_FK_EPI, I.EST_CUST_UNDfrom ESTOQUE as I,EPI as HINNER JOIN ESTOQUE ON EST_FK_EPI = H.EPI_IDwhere I.EST_DATA_ENTRADA =(SELECT max(aux.EST_DATA_ENTRADA) from ESTOQUE aux)Group by I.EST_FK_EPI, I.EST_CUST_UNDORDER BY I.EST_FK_EPI To: oracle_br@yahoogrupos.com.br From: vieira.rafae...@yahoo.com.br Date: Wed, 23 May 2012 11:17:31 -0700 Subject: Re: [oracle_br] Help no Script 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 Para: "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-2859 3.05 2011-10-2777 3.75 2012-02-1777 3.05 2011-09-3079 2.25 2012-02-1797 2.25 2011-09-3099 22.14 2011-09-30121 7.56 2011-09-30139 46.00 2012-02-17140 16.50 2012-02-17144 3.71 2011-09-30144 6.55 2012-05-16161 3.71 2011-09-30161 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] [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
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 > ** > > > 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 > Para: "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-2859 3.05 > 2011-10-2777 3.75 > 2012-02-1777 3.05 > 2011-09-3079 2.25 > 2012-02-1797 2.25 > 2011-09-3099 22.14 > 2011-09-30121 7.56 > 2011-09-30139 46.00 > 2012-02-17140 16.50 > 2012-02-17144 3.71 > 2011-09-30144 6.55 > 2012-05-16161 3.71 > 2011-09-30161 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 <*> 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
Re: [oracle_br] Help no Script
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 Para: "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]