Boa tarde, estou com dificuldades em fazer um select.
A estrutura das tabelas é a seguinte:
Cliente {
...
CliFis cliFis;
List<EndCliente> endsCliente;
...
}
CliFis {
...
String flCorrespondencia; //flag q seta qual endereço sera o "padrão"
...
}
EndCliente {
//tpEndereco
public static final String ENDERECO_COMERCIAL = "C";
public static final String ENDERECO_RESIDENCIAL = "R";
public static final String ENDERECO_INTERNACIONAL = "I";
...
String tpEndereco;
String deEndereco;
...
}
Preciso pegar somente o endereço que estiver marcado como princial.
O select é esse:
select
iteminfofi0_.nuiteminfofiscal, titulo3_.cddocumento, titulo3_.nudocumento, titulo3_.nutitulo, titulo3_.cdcliente,
coalesce(clijur9_.nuCNPJ, clifis10_.nuCPF) as nuCNPJnuCPF, 'CR' as origem,
clifis10_.flCorrespondencia,
CASE
when (clifis10_.flCorrespondencia = 'C' and endsclient6_.tpendereco = 'C') THEN endsclient6_.deendereco
when (clifis10_.flCorrespondencia = 'R' and endsclient6_.tpendereco = 'R') THEN endsclient6_.tpendereco
when (clifis10_.flCorrespondencia = 'I' and endsclient6_.tpendereco = 'I') THEN endsclient6_.tpendereco
end as deendereco
from ecrcItemInfoFiscal iteminfofi0_
inner join ecrcInfoFiscal infofiscal1_ on iteminfofi0_.nuTitulo=infofiscal1_.nuTitulo
inner join ecrcTitulo titulo3_ on infofiscal1_.nuTitulo=titulo3_.nuTitulo
inner join ecadDocumento documento4_ on titulo3_.cdDocumento=documento4_.cdDocumento
inner join ecadCliente cliente5_ on titulo3_.cdCliente=cliente5_.cdCliente
inner join ecadProdutoFiscal produtofis2_ on iteminfofi0_.cdProdutoFiscal=produtofis2_.cdProdutoFiscal
left outer join ecadEndCliente endsclient6_ on cliente5_.cdCliente=endsclient6_.cdCliente
left outer join ecadMunicipio municipio7_ on endsclient6_.cdMunicipio=municipio7_.cdMunicipio
left outer join ecadUF uf8_ on municipio7_.cdUF=uf8_.cdUF
left outer join ecadCliFis clifis10_ on cliente5_.cdCliente=clifis10_.cdCliente
where documento4_.flFiscal='S'
and infofiscal1_.cdFilial=1
and titulo3_.cdEmpresa=4
and (titulo3_.dtContabil between '2013.2.1' and '2013.2.28')
and (documento4_.cdModeloDoc in ('01', '1', '06'))
and cliente5_.fltpcliente = 'F'
A imagem mostra o resultado.
Sendo que o interessante seria somente os registros que contem informação no deeendereço.
Alguem poderia ma ajudar?