Ajuda para gerar relatório no iReport

Pessoal, estou com uma dúvida de como gerar um relatório para a seguinte situação.

Tenho uma query, por exemplo:

Select codcliente,nome,tipo from cliente

Aí faço um “for” no resultset desta query e para cada resultado, faço uma condição para ver qual função do banco vou chamar. Por exemplo

if(tipo.equals("F")){
 select calcula_pessoa_fisica(codcliente)
}else{
 select calcula_pessoa_juridica(codcliente)
}

O select não é exatamente esse, foi só um exemplo, mas espero ter sido claro na minha dúvida. Quero fazer um relatório com os dados destas pesquisas
Até hoje só fiz relatórios no iReport enviando apenas uma query.
Estou pensando em criar uma classe Model para popular com os dados retornados pelas consultas e enviar para o iReport, mas não sei como fazer isso.
Enfim…Aceito sugestões e espero ter sido claro no que eu preciso :stuck_out_tongue:

Na sua própria query isso já poderia ser resolvido… A maioria dos bancos implementa meios de executar instruções condicionais dentro de comandos select. Veja por exemplo duas abordagens que funcionariam em Oracle:

select codcliente
,nome
, decode(tipo,'F',calcula_pessoa_fisica(codcliente), calcula_pessoa_juridica(codcliente)) calculo 
from cliente

ou …

select codcliente
,nome
, case when tipo = 'F' then
          calcula_pessoa_fisica(codcliente)
  else
          calcula_pessoa_juridica(codcliente)
  end calculo 
from cliente

Acho que o case é mais universal, mas outros bancos implementam funcões semelhantes ao DECODE() do Oracle.

Mas concorda que o melhor dos mundos seria ter uma função única que já podia retornar direto o valor? Porque se ela vai receber o codcliente, internamente ela poderia consultar a tabela cliente e saber o tipo que ele é e a partir disso decidir se calcula uma pessoa física ou jurídica…

Concordo… realmente a melhor forma é ter uma única query. Eu vou ver se consigo aplicar a sua solução no meu caso.
Na verdade o que estou fazendo é pegando uma rotina m Delphi que está do jeito que descrevi no tópico e passando para Java.
Vou tentar dessa forma e depois retorno aqui se funcionou. Valeu!!