Olá Rafael... agradeço a sua colaboração e entedi o que vc falou abaixo com uma ressalva : No meu caso eu já estou passando o produto como parâmetro, LOGO vai ser retornado todos os fornecedores da COTAÇÃO 9616 do PRODUTO 26532. Passando o rownum = 1 sempre vai retornar o produto que eu quero de menor valor, porém quero que me retorne a linha toda, ou seja, PRODUTO, FORNECEDOR E PREÇO. Para o seu select retornar corretamente o produto tive que acrescentar mais uma linha na cláusula where repetindo o produto pois ele estava retornando produtos de outras cotações que tenha o mesmo preço. select Pro_In_Codigo Produto, Agn_In_Codigo Fornecedor, Cof_Re_Vlcustu "Melhor Oferta de Custo" from mgadm.Est_Itenscotpreco where Cof_Re_Vlcustu = (select min(Cof_Re_Vlcustu) from mgadm.Est_Itenscotpreco where Cot_In_Codigo = 9616 and Org_Tab_In_Codigo = 53 and Org_Pad_In_Codigo = 1 and Org_In_Codigo = 8 and Org_Tau_St_Codigo = 'G' and Pro_Tab_In_Codigo = 100 and Pro_Pad_In_Codigo = 1 and Pro_In_Codigo = 26532 and Cof_Re_Vlcustu > 0) and Pro_in_codigo = 26532 Além disso, como não existe índice indexado pelo valor, o seu select faz um access full na tabela com um custo muito elevado. A dúvida é se existe alguma maneira de retornar essa linha utilizando um único select. Talvez utilizando o comando over. Já ví algo parecido utilizando este comando mas não consegui implementar. Att. Abel de Souza Magalhães ___________________________________ Depto. Informática Ober S/A Indústria e Comércio [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> http://www.ober.com.br <http://www.ober.com.br/> (19) 3466-9200 R. 9391 ________________________________
De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Rafael Milanez - BusinessOn Enviada em: quinta-feira, 7 de dezembro de 2006 09:12 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Mínimo valor usando sub-select Abel este seu select talvez não seja a melhor maneira , pois se vc tiver mais de um produto com o menor valor , o ROWNUM =1 trara apenas uma linha Ve se funciona este select e se o tempo de performance é vantajoso set timing on select b.Pro_In_Codigo Produto, b.Agn_In_Codigo Fornecedor, b.Cof_Re_Vlcustu "Melhor Oferta de Custo" from mgadm.Est_Itenscotpreco b where b.Cof_Re_Vlcustu = (select min(Cof_Re_Vlcustu) from mgadm.Est_Itenscotpreco) and b.Cot_In_Codigo = 9616 and b.Org_Tab_In_Codigo = 53 and b.Org_Pad_In_Codigo = 1 and b.Org_In_Codigo = 8 and b.Org_Tau_St_Codigo = 'G' and b.Pro_Tab_In_Codigo = 100 and b.Pro_Pad_In_Codigo = 1 and b.Pro_In_Codigo = 26532 and b.Cof_Re_Vlcustu > 0 set timing off Abs ----- Original Message ----- From: Abel - Informatica To: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> Sent: Thursday, December 07, 2006 8:15 AM Subject: [oracle_br] Mínimo valor usando sub-select select b.Pro_In_Codigo Produto, b.Agn_In_Codigo Fornecedor, b.Cof_Re_Vlcustu "Melhor Oferta de Custo" from mgadm.Est_Itenscotpreco b where b.Cot_In_Codigo = 9616 and b.Org_Tab_In_Codigo = 53 and b.Org_Pad_In_Codigo = 1 and b.Org_In_Codigo = 8 and b.Org_Tau_St_Codigo = 'G' and b.Pro_Tab_In_Codigo = 100 and b.Pro_Pad_In_Codigo = 1 and b.Pro_In_Codigo = 26532 and b.Cof_Re_Vlcustu > 0 group by b.Pro_In_Codigo, b.Agn_In_Codigo, Cof_Re_Vlcustu order by 3 Olá, estou utilizando a instrução SQL acima e após executar a mesma, ela me retorna a seguinte informação : Produto Fornecedor Melhor Oferta de Custo 26532 13254 22,17959 26532 16318 22,86054 26532 19074 23,34693 26532 17096 24,31972 Preciso retornar o menor valor entre os listados acima porém preciso tbém da informação do Produto e do Fornecedor. Para isso, utilizei a seguinte forma : select xx.* from ( select b.Pro_In_Codigo Produto, b.Agn_In_Codigo Fornecedor , b.Cof_Re_Vlcustu "Melhor Oferta de Custo" from mgadm.Est_Itenscotpreco b where b.Cot_In_Codigo = 9616 and b.Org_Tab_In_Codigo = 53 and b.Org_Pad_In_Codigo = 1 and b.Org_In_Codigo = 8 and b.Org_Tau_St_Codigo = 'G' and b.Pro_Tab_In_Codigo = 100 and b.Pro_Pad_In_Codigo = 1 and b.Pro_In_Codigo = 26532 and b.Cof_Re_Vlcustu > 0 group by b.Pro_In_Codigo, b.Agn_In_Codigo, Cof_Re_Vlcustu order by 3 ) xx where rownum = 1 A pergunta é : Esta é a melhor forma de se fazer isso ? Existe outra forma de se conseguir o mesmo resultado sem utilizar o sub-select ? Aguardo seus comentários. Att. Abel de Souza Magalhães ___________________________________ Depto. Informática Ober S/A Indústria e Comércio [EMAIL PROTECTED] <mailto:abel.magalhaes%40ober.com.br> <mailto:[EMAIL PROTECTED] <mailto:abel.magalhaes%40ober.com.br> > http://www.ober.com.br <http://www.ober.com.br> <http://www.ober.com.br/ <http://www.ober.com.br/> > (19) 3466-9200 R. 9391 [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]