Fórum Select não soma #58358
08/06/2007
0
Begin
Close;
SQL.Clear;
SQL.Add(´Select QUANTIDADE, DATA, NUMEROPRODUTO, QUANTVENDIDA, PRECOUNITARIO,´+
´PRECOTOTAL, LUCROTOTAL, DESCONTO, PAGO, NUMEROCLIENTE,´+
´Sum(QUANTVENDIDA) as Quant, Sum(PRECOTOTAL) as Total,´+
´Sum(LUCROTOTAL) as Lucro, Sum(DESCONTO) as Desco from Vendas´);
SQL.Add(´Where (DATA >= :DtInicial and DATA <= :DtFinal)´);
SQL.Add(´Group by DATA, QUANTIDADE, NUMEROPRODUTO, QUANTVENDIDA, PRECOUNITARIO,´+
´PRECOTOTAL, LUCROTOTAL, DESCONTO, PAGO, NUMEROCLIENTE´);
ParamByName(´DTINICIAL´).AsDate := (DataInicial);
ParamByName(´DTFINAL´).AsDate := (DataFinal);
Prepare;
Open;
End;
Edilcimar
Curtir tópico
+ 0Posts
08/06/2007
Acacio
O tipo DataInicial é DateTime ou data simples.
Gostei + 0
08/06/2007
Edilcimar
Gostei + 0
08/06/2007
Acacio
contido nele. Tem que ver se realmente é necessário mostrar todos os campos nessa consulta.
Gostei + 0
08/06/2007
Edilcimar
Gostei + 0
10/06/2007
Acacio
Tais querendo mostrar os campos QUANTVENDIDA, PRECOTOTAL,
LUCROTOTAL e somar ao mesmo tempo, eu tirei esses campos dessa consulta e começou a somar certo. Tire eles do Group by também.
Não tem sentido quere somar e mostrá-los.
Poste uma mensagem se deu certo.
Gostei + 0
11/06/2007
Edilcimar
Gostei + 0
11/06/2007
Emerson Nascimento
tente assim:
With IBQuery1 do Begin Close; SQL.Clear; SQL.Add( ´Select DATA, NUMEROPRODUTO, PRECOUNITARIO, NUMEROCLIENTE,´+ ´Sum(QUANTVENDIDA) as QuantidadeVendida, Sum(PRECOTOTAL) as Total,´+ ´Sum(LUCROTOTAL) as Lucro, Sum(DESCONTO) as Desco from Vendas´); SQL.Add(´Where (DATA >= :DtInicial and DATA <= :DtFinal)´); SQL.Add(´Group by DATA, NUMEROPRODUTO, PRECOUNITARIO, NUMEROCLIENTE´); ParamByName(´DTINICIAL´).AsDate := (DataInicial); ParamByName(´DTFINAL´).AsDate := (DataFinal); Prepare; Open; End;
Gostei + 0
11/06/2007
Edilcimar
Gostei + 0
11/06/2007
Acacio
ele fará uma quebra para cada campo diferente então qualquer campo diferente que esteja no group by fara uma quebra sendo assim por isso ele não esta quebrando fiz o sql abaixo e ele está somando. Para entender melhor tire todos os campo e coloque um a um até achar a melhor solução.
SQl:
Select --QUANTIDADE,
DATA,NUMEROPRODUTO,PRECOUNITARIO,
--PAGO,
NUMEROCLIENTE,Sum(QUANTVENDIDA) as Quant,
Sum(PRECOTOTAL) as Total,
Sum(LUCROTOTAL) as Lucro, Sum(DESCONTO) as Desco
from Vendas
where (DATA >= ´01/01/2007´ and DATA <= ´07/30/2007´)
Group by --QUANTIDADE,
DATA,NUMEROCLIENTE,NUMEROPRODUTO,PRECOUNITARIO--,PAGO,
Gostei + 0
12/06/2007
Edilcimar
Simplesmente é impossível rodar sem o group by ou sem qualquer um dos campos no group by, não importa qual campo eu retire ele simplesmente dá um erro de sql, caso coloque todos os campos, aí ele funciona mas não soma
Gostei + 0
12/06/2007
Acacio
Gostei + 0
12/06/2007
Emerson Nascimento
With IBQuery1 do Begin Close; SQL.Clear; SQL.Add( ´Select NUMEROCLIENTE, NUMEROPRODUTO, ´+ ´Sum(QUANTVENDIDA) as QuantidadeVendida, Sum(PRECOTOTAL) as Total, ´+ ´Sum(LUCROTOTAL) as Lucro, Sum(DESCONTO) as Desco from Vendas´); SQL.Add(´Where (DATA >= :DtInicial and DATA <= :DtFinal)´); SQL.Add(´Group by NUMEROCLIENTE, NUMEROPRODUTO´); ParamByName(´DTINICIAL´).AsDate := (DataInicial); ParamByName(´DTFINAL´).AsDate := (DataFinal); Prepare; Open; End;
Gostei + 0
12/06/2007
Edilcimar
Emerson -> reclama da falta do campo data, e quando é selecionado, dá erro na sql
Gostei + 0
13/06/2007
Adriano_servitec
Se for, vc pode fazer por exemplo no query na propriedade SQL assim
Bom neste caso eu fiz assim somente para pegar os fields de cada soma e jogar em quatro DBText os fields.
Depois num button posso fazer o filtro assim
With ZQuery1 do Begin Close; SQL.Clear; SQL.Add( ´Select Sum(QUANTVENDIDA) as QuantidadeVendida, Sum(PRECOTOTAL) as Total, ´+ ´Sum(LUCROTOTAL) as Lucro, Sum(DESCONTO) as Desconto from Vendas´); SQL.Add(´Where (DATA between :DtInicial and :DtFinal)´); ParamByName(´DTINICIAL´).AsDate := strtodate(mask1.text); ParamByName(´DTFINAL´).AsDate := strtodate(Mask2.text); //Prepare; Open; end;
Fiz aqui e funcionou, aou menos se eu filtrar apareçe o resultado cfe. as datas que eu quero.
Bom a nao ser que tenha que mostrar mais algo em algum dbgrid na hora de filtrar.
Gostei + 0
14/06/2007
Edilcimar
Quero somar os campos preço total, desconto e lucro para efetuar cálculos com eles e mostrar ao cliente, qual foi o lucro bruto e qual o total de desconto e lucro líquido, isto entre 2 datas a escolha do cliente, portanto tenho que mostrar todos os campos citados
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)