Relatorios

Boa tarde,
O problema é o seguinte eu estou desenvolvendo um relatorio no Ireports de plano de contas, onde o saldo é a ‘contaCredito’ - 'contaDebito. só que quando não tenho valores em alguns desse atributos, retorna ‘null’, ai ele não faz a subtraçao. Preciso que retorne ‘0’ na contaCredito e na contaDebito, para que possa fazer a subtração corretamente.
o meu banco eh postgres.
O que vocês sugerem q eu faça?

Olá v.marcos.

Na sua consulta ao banco de dados, faça:

coalesce(contaCredito,0) - coalesce(contaDebito,0).

Abraços.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

Vlw Fabiano,
Mas sou um pouco leigo no assunto ainda, e não sei como ficaria a minha consulta, e gostaria que me ajudasse. veja abaixo a minha:

select
  pc.conta,pc.descricao,
  ( select sum(valor) from lancamento where left(idcontacredito,length(pc.conta)) = pc.conta )  as Credito,
    ( select sum(valor) from lancamento where left(idcontadebito,length(pc.conta)) = pc.conta ) as Debito,
      ( select sum(valor) from lancamento where left(idcontacredito,length(pc.conta)) = pc.conta )  - ( select sum(valor) from lancamento where left(idcontadebito,length(pc.conta)) = pc.conta )  as Saldo

from
  planocontas pc order by conta;

Olá v.marcos,

Veja.

select  
  pc.conta,pc.descricao,  
  ( select sum(coalesce(valor,0)) from lancamento where left(idcontacredito,length(pc.conta)) = pc.conta )  as Credito,  
    ( select sum(coalesce(valor,0)) from lancamento where left(idcontadebito,length(pc.conta)) = pc.conta ) as Debito,  
      ( select sum(coalesce(valor,0)) from lancamento where left(idcontacredito,length(pc.conta)) = pc.conta )  - ( select sum(coalesce(valor,0)) from lancamento where left(idcontadebito,length(pc.conta)) = pc.conta )  as Saldo  
  
from  
  planocontas pc order by conta; 

Abraços.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

Boa tarde Fabiano,
Agradeço pela ajuda, fiz algumas modificações aqui e deu tudo certo…
veja como ficou…

[code]select
pc.conta,pc.descricao,
( select coalesce(sum(valor),0) from lancamento where left(idcontacredito,length(pc.conta)) = pc.conta ) as Credito,
( select coalesce(sum(valor),0) from lancamento where left(idcontadebito,length(pc.conta)) = pc.conta ) as Debito,
( select coalesce(sum(valor),0) from lancamento where left(idcontacredito,length(pc.conta)) = pc.conta ) - ( select coalesce(sum(valor),0) from lancamento where left(idcontadebito,length(pc.conta)) = pc.conta ) as Saldo

from
planocontas pc order by conta;
[/code]

mto boa a sua sugetao.

ah gente surgiu outra duvida como colocar nos paramentro do tipo date?

coalesce(data,???)

se fosse inteirto passaria zero, se fosse string passaria ’ ', e date como seria??

v.marcos,

Na data você faz o seguinte:

coalesce(data,now())

Abraços.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL