consulta com max mostrar campo

Firebird

12/08/2005

Bem amigos estou com uma bronquinha eu sempre faço este procedimento mas com umas gambiarras a consulta e a seguinte

SELECT LIFD, LIPD, MAX(LIVL) FROM LICITACAOITENS
GROUP BY LIFD, LIPD

isto e para um licitação, são digitados todos os campos porem quero que me retorne o valor máximo do produto por fornecedor, porém se for com esta consulta ele me retorna várias vezes o mesmo produto.

será que alguem ai tem uma ideia ???


Sremulador

Sremulador

Curtidas 0

Respostas

Afarias

Afarias

12/08/2005

Vc quer o valor máximo por produto, e então qual(is) o(s) fornecedor(es) que oferece(m) este valor máximo, correto?

Um procedimento cai bem...:

set term ^;

create procedure maximos 
  returns (produto tipo, valor tipo, fornecedor tipo) as
begin
  for select lipd, max(livl) from licitacaoitens
      into :produto, :valor do
  begin
    for select lifd from licitacaoitens
        where lipd=:produto and livl=:valor
        into :fornecedor do
          suspend;
  end
end^ 


T+


GOSTEI 0
Afarias

Afarias

12/08/2005

Ah! vc pode por um parâmetro de entrada neste procedimento para informar qual a licitação deve ser pesquisada (para não ser todas como está!)


T+


GOSTEI 0
Sremulador

Sremulador

12/08/2005

mestre deu certo porém temos que levar em conta que se os valores forem iguais para os mesmos fornecedores ele vai cair duas vezes o mesmo item, mas terei que contornar este probleminha de outra maneira obrigado.

RETURNS ( LIPD INTEGER, LIFD INTEGER, LIVL DECIMAL (18, 2)) AS BEGIN FOR SELECT LIPD, MAX(LIVL) FROM licitacaoitens GROUP BY LIPD INTO :LIPD, :LIVL DO begin FOR SELECT LIFD FROM licitacaoitens WHERE LIPD=:LIPD AND LIVL=:LIVL INTO :LIFD DO SUSPEND; END SUSPEND;



GOSTEI 0
Afarias

Afarias

12/08/2005

|mestre deu certo porém temos que levar em conta que se os valores
|forem iguais para os mesmos fornecedores ele vai cair duas vezes o
|mesmo item

Achei q a intenção era essa... afinal, se 2 fornecedores tem o mesmo preço, como vc escolheria entre 1 dos 2?? Teria q haver outro ´parâmetro´ ai...


T+


GOSTEI 0
POSTAR