Sum resultando um valor errado
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]
[b:ee12610425]QUERY2[/b:ee12610425]
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:
[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
Curtidas 0
Respostas
Steve_narancic
04/10/2006
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]
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]
GOSTEI 0
Vagner.oliveira
04/10/2006
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]
GOSTEI 0
Macario
04/10/2006
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:
Desta forma voce obtem a soma do periodo inteiro.
O mesmo se aplica para calcular os valores de debito.
[]´s
8)
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)
GOSTEI 0
Vagner.oliveira
04/10/2006
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´;
GOSTEI 0