Duívidas para inserir o comando SUM

10 respostas
A

Bom dia galera, tenho uma queru que me traz o código do lançamento, o valor do lançamento e a data de vencimento, tenho que colocar um SUM no valor do lançamento para somar o total de debitos, porém quando coloco o SUM não ta dando certo, não ta mostrar o total de todos os lançamentos, preciso de um Help… vo postar a query e os resultados
QUERY

select flan.idlan, flan.valororiginal, convert(char(10),min(flan.datavencimento),103) from edesclan, flan where flan.datavencimento < getdate() and edesclan.mataluno = 'ABCDERFG' and edesclan.codlanc = flan.idlan and flan.statuslan in (0) group by flan.idlan,flan.valororiginal
RESULTADO SEM O SUM

Resultado com o SUM

10 Respostas

ViniGodoy

Que dados você precisa gerar?

A

Preciso da soma do campo valororiginal, que está na primeira imagem, na segunda que tem outro resultado, e coloquei o SUM no campo, porem o resultado veio todo errado como pode ser visto ai na segunda imagem.

ViniGodoy

Posta aí uma tabelinha de exemplo de como vc esperava ver esses resultados.

ViniGodoy

É a soma por data? Se for, vai ter que fazer um GROUP BY pela data.

A

Não é por data, é só a soma do campo valororiginal

ViniGodoy

Então vc só quer retornar uma única soma? Só o total?

Se for isso, tire o flan.idlan do seu Group by.

Mas nesse caso, também não sei para que você está puxando a data.

ViniGodoy

Não conheço suas tabelas, mas deve ser assim:

SELECT flan.valororiginal, FROM edesclan INNER JOIN flan ON edesclan.codlanc = flan.idlan WHERE flan.datavencimento < getdate() AND edesclan.mataluno = 'ABCDERFG' AND flan.statuslan in (0) GROUP BY flan.valororiginal

O ideal é usar Inner Join no lugar de um WHERE como o que você colocou. Além de ficar uma sintaxe mais clara, muitos bancos tem melhores otimizadores para os JOINs do que para um WHERE que simula um JOIN.

A

Oi Vinni, estou utilizando SQLServer, como você solicitou retirei o idlan da query e coloquei o SUM para somar o campo valortotal, o resultado permaneceu errado, olha abaixo

ViniGodoy

Qual era para ser o valor certo?

Cada, não dá para adivinhar o que tem nas suas tabelas. Se você não quer o total por data, retire a saída dela no SELECT, mais ou menos como eu já fiz ali.

Aleksandro

Se você quer apenas a soma da coluna flan.valororiginal faça assim:

SELECT sum(flan.valororiginal) FROM edesclan INNER JOIN flan ON edesclan.codlanc = flan.idlan WHERE flan.datavencimento < getdate() AND edesclan.mataluno = 'ABCDERFG' AND flan.statuslan in (0) ;

Agora senão for isto … explique melhor ou pelo menos informe os dados que precisam ser mostrados …

Criado 26 de março de 2013
Ultima resposta 26 de mar. de 2013
Respostas 10
Participantes 3