GARANTIR DESCONTO

Fórum Select usando Max e Group by #186829

07/10/2003

0

[b:fe5181eecc]Boa tarde pessoal[/b:fe5181eecc]

Bom é o seguinte ja postei varios topicos semelhantes a esse

no qual acho que nao fui muito claro na questao

entao agora simplificando


como faço para obter a maior nota fiscal da [b:fe5181eecc]tabela arqnfis[/b:fe5181eecc],
seguida dos campos data, valor e cliente


quem pode me ajudar nesse select


Macario

Macario

Responder

Posts

07/10/2003

Wsantos

Oi Macario

Meu nome é Washington, acho que já conversamos antes, assim que entrei no grupo.
Se o Campo da NotaFiscal for Number, o select seria:

Select NotaFiscal, Data, Valor, Cliente from arqnfis
Where NotaFiscal = (Select Max(NotaFiscal) from arqnfis)

Boa Sorte.


Responder

Gostei + 0

07/10/2003

Macario

WSantos o que eu preciso colega seria retornar a ultima nota de cada cliente

olha so esse select

e se vc puder da uma olhada nos outros topicos que eu ja postei

with QryTemp do begin Close; DatabaseName := DM.TArqEmpr.DatabaseName; SQL.Clear; SQL.Add(´select´); SQL.Add(´C.v1 as Cod, C.v2 as Cliente, C.v4 as Municipio, C.v5 as UF,´); SQL.Add(´C.v12 as Contato, C.v13 as Telefone, R.v1 as codrep,´); SQL.Add(´R.v2 as Representante, C.Datacad,´); SQL.Add(´N.Dnf as Data, N.nnf as Nota, sum (N.vlr * N.qte+ n.ipi) as Valor´); SQL.Add(´from arqclie C, arqprnf N, arqrepr R´); SQL.Add(´Where (C.v1 = N.ncl) and (N.nre = R.v1) and (N.nnf = N.nnf) and´); SQL.Add(´(c.v1 between :cli1 and :cli2) and´); SQL.Add(´(n.nre between :rep1 and :rep2)´); SQL.Add(´Group by C.v1, C.v2, C.v4, C.v5, C.v12,C.v13,R.v1, R.v2, C.datacad,´); SQL.Add(´n.dnf, n.nnf´); SQL.Add(´order by R.v1,C.v1, n.nnf´); Params[0].Value := mdtCliIni.Text; Params[1].Value := mdtCliFim.Text; Params[2].Value := mdtRepIni.Text; Params[3].Value := mdtRepFim.Text; Open; end;



Responder

Gostei + 0

08/10/2003

Adilsond

  with QryTemp do
    begin
      if Active then
         Close;
      DatabaseName := DM.TArqEmpr.DatabaseName;
      SQL.Clear;
      SQL.Add(´select C.v1 as Cod,´);
      SQL.Add(´       C.v2 as Cliente,´);
      SQL.Add(´       C.v4 as Municipio,´);
      SQL.Add(´       C.v5 as UF,´);
      SQL.Add(´       C.v12 as Contato,´);
      SQL.Add(´       C.v13 as Telefone,´);
      SQL.Add(´       R.v1 as codrep,´);
      SQL.Add(´       R.v2 as Representante,´);
      SQL.Add(´       C.Datacad,´);
      SQL.Add(´       N.Dnf as Data,´);
      SQL.Add(´       N.nnf as Nota,´);
      SQL.Add(´       N.vlr * N.qte + n.ipi as Valor´);
      SQL.Add(´from arqclie C,´);
      SQL.Add(´     arqprnf N,´);
      SQL.Add(´     arqrepr R´);
      SQL.Add(´where (C.v1 = N.ncl)´);
      SQL.Add(´  and (R.v1 = N.nre)´);
      SQL.Add(´  and (N.nnf = (select max(NF.nnf)´);
      SQL.Add(´                from arqprnf NF´);
      SQL.Add(´                where NF.ncl = C.v1´);
      SQL.Add(´  and (C.v1 between :cli1 and :cli2)´);
      SQL.Add(´  and (N.nre between :rep1 and :rep2)´);
      SQL.Add(´order by R.v1,´);
      SQL.Add(´         C.v1´);
      Params[0].AsInteger := StrToInt(mdtCliIni.Text);
      Params[1].AsInteger := StrToInt(mdtCliFim.Text);
      Params[2].AsInteger := StrToInt(mdtRepIni.Text);
      Params[3].AsInteger := StrToInt(mdtRepFim.Text);
      Open;
    end;


Obs: Voce pediu ´retornar a ultima nota de cada cliente´ então o comando:
      SQL.Add(´  and (N.nnf = (select max(NF.nnf)´);
      SQL.Add(´                from arqprnf NF´);
      SQL.Add(´                where NF.ncl = C.v1´);

retornará a última NF do cliente, mas se esta NF não pertencer ao representante
atual, ela não será mostrada.
Se voce desejar a última NF do cliente para cada representante modifique para:
      SQL.Add(´  and (N.nnf = (select max(NF.nnf)´);
      SQL.Add(´                from arqprnf NF´);
      SQL.Add(´                where NF.ncl = C.v1´);
      SQL.Add(´                  and NF.nre = R.v1´);


Acho que é isto. Faça o teste.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar