GARANTIR DESCONTO

Fórum Select falta pouco..... #186674

07/10/2003

0

Bom dia colegas

Vejam só estou precisando criar um relatorio de clientes inativos.

as tabelas são as seguintes

clientes
representantes
notafiscal
produto_NF

eu preciso mostrar os seguintes campos

Codcli Nomecli CodRepre NomeRepre Nº Nota Valor Nota Data Nota

sendo que para compor o campo valor da nota uso os campos QTE , VLR e IPI da tabela produto_NF, agora vcs sabem que nessa tabela tenho varios registros referente a mesma nota.

com o select abaixo ele me retorna todas as notas somadas cada uma corretamente

with QryTemp do begin Close; DatabaseName := DM.TArqEmpr.DatabaseName; SQL.Clear; SQL.Add(´select´); SQL.Add(´C.v1 as Cod, C.v2 as Cliente,´); SQL.Add(´ R.v1 as codrep,R.v2 as Representante,´); 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,R.v1, R.v2, 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;



mas como disse eu preciso que seje apenas a ultima nota de cada cliente por representante

com esse outro select ele me retorna apenas a ultima nota mas ele soma o valor de todas, e [b:5df3a293a1]esse esta sendo o meu problema[/b:5df3a293a1]

with QryTemp do begin Close; DatabaseName := DM.TArqEmpr.DatabaseName; SQL.Clear; SQL.Add(´select´); SQL.Add(´C.v1 as Cod, C.v2 as Cliente,´); SQL.Add(´ R.v1 as codrep,R.v2 as Representante,´); SQL.Add(´Max (N.Dnf) as Data, Max (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,R.v1, R.v2´); SQL.Add(´order by R.v1,C.v1´); Params[0].Value := mdtCliIni.Text; Params[1].Value := mdtCliFim.Text; Params[2].Value := mdtRepIni.Text; Params[3].Value := mdtRepFim.Text; Open; end;



alguem poderia me auxiliar nisso



P.s: depois viram outras perguntas


Grato pela atenção


Macario

Macario

Responder

Posts

07/10/2003

Macario

Colegas será que nao fui um claro nessa minha pergunta?


Responder

Gostei + 0

07/10/2003

Joilson_gouveia

Veja se seu banco de dados suporta esse select:

with QryTemp do
begin
Close;
DatabaseName := DM.TArqEmpr.DatabaseName;
SQL.Clear;
SQL.Add(´Select´);
SQL.Add(´A.Cod,A.Cliente,A.CodRep,A.Representante,Max(A.Data),A.Nota,A.Valor´);
SQL.Add(´ from (select´);
SQL.Add(´C.v1 as Cod, C.v2 as Cliente,´);
SQL.Add(´ R.v1 as codrep,R.v2 as Representante,´);
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,R.v1, R.v2, n.dnf, n.nnf) A´);
SQL.Add(´Group by A.Cod,A.Cliente,A.CodRep,A.Representante,A.Nota,A.Valor´);
SQL.Add(´order by A.CodRep,A.Cod,A.Nota´);
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

07/10/2003

Macario

nao deu certo joilson ele acusa erro no segundo select

invalid use of keyword token: select c.v1



Responder

Gostei + 0

07/10/2003

Marcelo.c

Não seria C.v1, com C maiúsculo ?


Responder

Gostei + 0

07/10/2003

Macario

Não seria C.v1, com C maiúsculo ?

nao é isso


Responder

Gostei + 0

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

Aceitar