Fórum Sum resultando um valor errado #330700

04/10/2006

0

Pessoal. tenho uma tabela em [u:ee12610425][b:ee12610425]paradox [/b:ee12610425][/u:ee12610425]com os seguintes campos.
[b:ee12610425]CD [/b:ee12610425][b:ee12610425][color=red:ee12610425](A)[/color:ee12610425][/b:ee12610425] - Alpha
[b:ee12610425]Valor [/b:ee12610425][color=green:ee12610425][b:ee12610425]($)[/color:ee12610425][/b:ee12610425]- Currency
[b:ee12610425]Data [/b:ee12610425][b:ee12610425][color=darkblue:ee12610425](D)[/color:ee12610425][/b:ee12610425] - Date

Por questão de teste, coloquei 2 querys som os seguintes códigos:

[b:ee12610425]QUERY1[/b:ee12610425]
Select data, SUM(valor) From Financeiro 
Where Data >= :DataI and data <= :DataF 
and CD =´credito´
group by data;




[b:ee12610425]QUERY2[/b:ee12610425]
Select data, SUM(valor) From Financeiro 
Where Data >= :DataI and data <= :DataF 
and CD =´debito´
group by data;


a [b:ee12610425]data inicial[/b:ee12610425] e [b:ee12610425]data final[/b:ee12610425] das duas são as mesmas [b:ee12610425]31/01/2006[/b:ee12610425] e [b:ee12610425]31/12/2006[/b:ee12610425] respectivamente.


Na tabela tenho os seguintes valores:
[b:ee12610425]CD ----- DATA -------- VALOR[/b:ee12610425]
credito - 27/09/2006 - R$10,00
debito - 28/09/2006 - R$45,00
debito - 28/09/2006 - R$60,00
debito - 05/10/2006 - R$5,00
credito - 05/10/2006 - R$12,00


Só que no valor final, está aparecendo o seguinte valor
[b:ee12610425]para a query do credito: R$10,00
e para a query do debito: R$ 105,00[/b:ee12610425]


A questão é , porque ele está fazendo este calculo maluco, acho que é por causa do group by. alguem pode me dar uma luz :roll:


Vagner.oliveira

Vagner.oliveira

Responder

Posts

05/10/2006

Steve_narancic

Amigo, o [b:0030869a6d]group by [/b:0030869a6d] está fazendo o somatório pelas datas, ou seja o resultado das querys:

credito
para o dia 27/09 - 10,00
para o dia 05/10 - 12,00

debito
para o dia 28/09 - 95,00
para o dia 05/10 - 5,00

para[b:0030869a6d] não [/b:0030869a6d]agrupar a soma pela data [b:0030869a6d]remova o group by[/b:0030869a6d]


Responder

Gostei + 0

05/10/2006

Vagner.oliveira

Amigo, o [b:14cd1256c0]group by [/b:14cd1256c0] está fazendo o somatório pelas datas, ou seja o resultado das querys: credito para o dia 27/09 - 10,00 para o dia 05/10 - 12,00 debito para o dia 28/09 - 95,00 para o dia 05/10 - 5,00 para[b:14cd1256c0] não [/b:14cd1256c0]agrupar a soma pela data [b:14cd1256c0]remova o group by[/b:14cd1256c0]


Bem que gostaria de tirar o [b:14cd1256c0]group by[/b:14cd1256c0] só que se fizer isso da erro:

[b:14cd1256c0][color=red:14cd1256c0]GROUP BY is required when both aggregate and non-aggregate fields are used in result set.[/color:14cd1256c0][/b:14cd1256c0]


Responder

Gostei + 0

05/10/2006

Macario

Ola, vagner.oliveira.

Colega ao remover a clausula group by, voce tambem devera remover o campo nao computado ou seja remover o campo data.

Exemplo:


select 
  sum(VALOR) as TOTAL from FINANCEIRO
where 
  DATA >= :DATAI 
  and DATA <= :DATAF
  and CD =´CREDITO´


Desta forma voce obtem a soma do periodo inteiro.


O mesmo se aplica para calcular os valores de debito.

[]´s
8)


Responder

Gostei + 0

05/10/2006

Vagner.oliveira

Muito obrigado, não sabia que era uma coisa tão obvia. :oops: :oops: vou postar o código para que não quebrem a cabeça como eu.

Select SUM(valor) From Financeiro 
Where Data >= :DataI and data <= :DataF and CD =´Credito´;



Responder

Gostei + 0

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

Aceitar