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
Que dados você precisa gerar?
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.
Posta aí uma tabelinha de exemplo de como vc esperava ver esses resultados.
É a soma por data? Se for, vai ter que fazer um GROUP BY pela data.
Não é por data, é só a soma do campo valororiginal
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.
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.
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
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.
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 …