Relatorios

6 respostas
V

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?

6 Respostas

Fabiano_Abreu

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

V

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;
Fabiano_Abreu

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

V

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

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;

mto boa a sua sugetao.

V

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??

Fabiano_Abreu

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

Criado 7 de novembro de 2011
Ultima resposta 8 de nov. de 2011
Respostas 6
Participantes 2