| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
rique_neves Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012 Mensagens: 873
|
Enviada: Qui Set 11, 2014 10:35 am Assunto: Comando SUM - Sql - Firebird 2.1.3 [Resolvido] |
|
|
Pessoal bom dia, não mando muito bem com sql's!
Tenho essa sintaxe, gostaria de Somar o Campo ValorParc ao realizar essa consulta. Podem de ajudar.
| Código: | | select CODIGO_CLIFOR,CODPARC, DATAVENCTO, DATAEMISSAO,DIAS, VALORPARC from movto where (codigo_clifor like :p1) and (datavencto <:p2) and situacao =:p3 order by datavencto |
Fiz assim mas está me dando erro:
| Código: | select movto.CODIGO_CLIFOR,movto.CODPARC, movto.DATAVENCTO, movto.DATAEMISSAO,movto .DIAS, sum(movto .VALORPARC) as ValorParcela from movto
where (movto .codigo_clifor like :p1) and (movto .datavencto <=:p2) and movto .situacao =:p3 group by movto .datavencto |
Bye _________________ Atrás de todo problema a uma oportunidade brilhantemente disfarçada!
Compartilhar Imagens .: http://s124.photobucket.com/
Editado pela última vez por rique_neves em Qui Set 11, 2014 2:32 pm, num total de 3 vezes |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Set 11, 2014 11:09 am Assunto: |
|
|
Bom dia,
Experimente adicionar todos os campos retornados que não estão dentro de funções de agregação no Group By:
| Código: | group by
movto.CODIGO_CLIFOR,
movto.CODPARC,
movto.DATAVENCTO,
movto.DATAEMISSAO,
movto.DIAS |
Espero que ajude.
Editado pela última vez por imex em Qua Mar 08, 2023 12:02 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
rique_neves Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012 Mensagens: 873
|
Enviada: Qui Set 11, 2014 11:56 am Assunto: |
|
|
Imex, retornando o post.
O sql não retorna erro, mas não está somando.
Close;
| Código: | SQL.clear;
SQL.Add('select movto.CODIGO_CLIFOR,movto.CODPARC, movto.DATAVENCTO, movto.DATAEMISSAO,movto.DIAS,');
SQL.Add('movto.valorparc,sum(movto.VALORPARC) as SomaParcela from movto where (movto.codigo_clifor like :p1)');
SQL.Add('and (movto.datavencto <=:p2) and (movto.situacao =:p3) group by movto.datavencto,');
SQL.Add('movto.CODIGO_CLIFOR,movto.CODPARC,movto.DATAEMISSAO,movto.DIAS,movto.valorparc');
ParamByName('p1').AsInteger := dblCliente.KeyValue;
ParamByName('p2').AsDateTime:= date;
ParamByName('p3').AsString := 'A';
Open; |
_________________ Atrás de todo problema a uma oportunidade brilhantemente disfarçada!
Compartilhar Imagens .: http://s124.photobucket.com/ |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Set 11, 2014 1:49 pm Assunto: |
|
|
Com a sintaxe que foi utilizada, os registros serão agrupados (e no seu caso o valor será somado) se todos os campos que estão no Group By possuirem o mesmo valor.
Acho melhor você explicar o que pretende fazer com o resultado dessa query, caso não consiga obter o resultado desejado e precise de outras sugestões. |
|
| Voltar ao Topo |
|
 |
rique_neves Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012 Mensagens: 873
|
Enviada: Qui Set 11, 2014 1:56 pm Assunto: |
|
|
Certo. Preciso do seguinte.
Selecionar todos as parcelas que estão com data de vencimento em atraso - menor ou igual que a data correto, e com situacao = 'A'. Com o resultado dessa seleção quero que some quando deu.
Exemplo si encontrar 2 parcela aberta no valor de R$ 85,00, então o total será R$ 170,00.
Tenho que listar também as parcelas em aberto.
Neste select que montei está trazendo as informações menos a soma das parcelas.
Quanto ao valor da parcela são igual neste exemplo dado de R$ 85,00 _________________ Atrás de todo problema a uma oportunidade brilhantemente disfarçada!
Compartilhar Imagens .: http://s124.photobucket.com/ |
|
| Voltar ao Topo |
|
 |
rique_neves Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012 Mensagens: 873
|
Enviada: Qui Set 11, 2014 2:06 pm Assunto: |
|
|
veja:
 _________________ Atrás de todo problema a uma oportunidade brilhantemente disfarçada!
Compartilhar Imagens .: http://s124.photobucket.com/ |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Set 11, 2014 2:19 pm Assunto: |
|
|
O valor da parcela pode ser diferente.
Os valores dos campos que estão no Group By é que tem que ser iguais para que os registros sejam agrupados.
Se você quer que esse total seja impresso, acho melhor você fazer a soma através da ferramenta utilizada para emitir o relatório.
Se você por acaso está utilizando um ClientDataSet, você pode criar um campo do tipo agregado para obter o total.
Outra alternativa seria utilizar 2 querys, sendo uma para obter os dados das parcelas em aberto e outra para obter somente o total (nesse caso será possível remover do Select e do Group By os campos que estão impedindo o agrupamento dos registros).
Espero que ajude. |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qui Set 11, 2014 2:26 pm Assunto: |
|
|
Quando estou nesta situação, escolho entre duas 2 maneiras (não sei se são as mais corretas):
1ª - Após o Select percorro o resultado com While acumulando o valor da parcela numa variável e no final mostro essa totalização.
2ª - Com outra Query faço um segundo select simples somando a parcela.
Exemplo:
| Código: |
SQL.clear;
SQL.Add('select sum(VALORPARC) as SomaParcela from movto ');
SQL.Add('where (codigo_clifor like :p1)');
SQL.Add('and (datavencto <=:p2) and (situacao =:p3)');
ParamByName('p1').AsInteger := dblCliente.KeyValue;
ParamByName('p2').AsDateTime:= date;
ParamByName('p3').AsString := 'A';
Open;
|
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
rique_neves Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012 Mensagens: 873
|
Enviada: Qui Set 11, 2014 2:31 pm Assunto: |
|
|
Imex e Natanbh1.
Pensei também em usar uma QueryAux, só pra soma, e é isto que vou fazer.
Sinceramente não fico contente, 2 sql's para 1 resultado é injusto isso.
Obrigado a todos pela ajuda.
bye _________________ Atrás de todo problema a uma oportunidade brilhantemente disfarçada!
Compartilhar Imagens .: http://s124.photobucket.com/ |
|
| Voltar ao Topo |
|
 |
|