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
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
Anderson_S
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
Anderson_S
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
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 …