Fórum Sum entre 2 tabelas #59886
16/06/2008
0
Select m.codmensalidade, m.valor, m.codcliente,
m.valor +
((Select sum(mr1.valor) from mensalidadereajustereducao mr1
Where mr1.codmensalidade = m.codmensalidade and mr1.dc =´C´) -
(Select sum(mr2.valor) from mensalidadereajustereducao mr2
Where mr2.codmensalidade = m.codmensalidade and mr2.dc =´D´)) as ValorCobrar
from mensalidade m
Order by m.codmensalidade
Regismatos
Curtir tópico
+ 0Posts
16/06/2008
Regismatos
Na Tabela mensalidadereajustereducao = 50,00 ‘D’
Na Tabela mensalidadereajustereducao = ‘’ ‘C’ sem valor
O resultado é ´´ nada!?
Gostei + 0
16/06/2008
Emerson Nascimento
Select m.codmensalidade, m.valor, m.codcliente, m.valor + ( (Select sum(coalesce(mr1.valor,0)) from mensalidadereajustereducao mr1 where mr1.codmensalidade = m.codmensalidade and mr1.dc = ´C´) - (Select sum(coalesce(mr2.valor,0)) from mensalidadereajustereducao mr2 Where mr2.codmensalidade = m.codmensalidade and mr2.dc =´D´) ) as ValorCobrar from mensalidade m Order by m.codmensalidade
note que o segredo é o uso da função coalesce().
possivelmente você não tem valores a debitar e/ou creditar, resultando NULL, e NULL não pode ser somado ou subtraído, anulando a conta.
com o uso do coalesce(), se o retorno for NULL, a função assumirá o valor 0 (zero), o que permitirá efetuar a conta normalmente.
Gostei + 0
17/06/2008
Regismatos
Select m.*,
m.valororiginal +
(coalesce((Select sum(mr1.valor) from mensalidadereajustereducao mr1
Where mr1.codmensalidade = m.codmensalidade and mr1.dc =´C´),0)) -
(coalesce(
(Select sum(mr2.valor) from mensalidadereajustereducao mr2
Where mr2.codmensalidade = m.codmensalidade and mr2.dc =´D´),0)) as ValorCobrar
from mensalidade m
Where m.codcliente =:busca
Order by m.codmensalidade
Obrigado.... valeu!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)