Amigos, estou com um problema,
preciso fazer um subselect dentro de um case dentro de um select como no exemplo abaixo:
Select codigo, B, CASE a WHEN 'b' THEN (select Count(*) from tabela2 t2 WHERE t2.codigo = t1.codigo) WHEN 'c' THEN (select COUNT(*) from tabela3 t3 WHERE t3.codigo = t1.codigo) END FROM tabela1 t1
no SQL eu consegui fazer tranquilo, porem quando passo para HQL da problema…
no HQL eu consigo fazer um subselect normal:
Select codigo, B, (select COUNT(*) from tabela3 t3 WHERE t3.codigo = t1.codigo) From tabela1 t1
e tambem consigo fazer um CASE
Select codigo, B, CASE a WHEN 'b' THEN 's END From tabela1 t1
Mas colocar o subselect dentro do CASE nao estou conseguindo, ele me da um nullpoint exception… alguem pode me ajudar??
segue o meu Sql
" SELECT " +
" m.cdMensagem, " +
" mt.tpMensagem, " +
" i.nmInstituicao, " +
" u.nmUsuario, " +
" m.dtMensagem, " +
" m.hrMensagem, " +
" m.cdStatusMensagem, " +
" m.nrProtocolo, " +
" m.dtDiaResposta, " +
" m.dtNegativacaoResposta, " +
" m.icNecessitaResposta, " +
" m.cdUsuarioAssinarAprovar, " +
" m.icRequerRespostaParte, " +
" cmi.cdCaixaInstituicao, " +
" CASE mt.tpMensagem WHEN 'Consulta' THEN " +
" (SELECT count(*) " +
" FROM TbMensagemItem mi1 " +
" JOIN mi1.tbMensagemItemRespostaList mir1 " +
" WHERE mi1.tbMensagem.cdMensagem = 1 AND mir1.icRespostaPositiva = false) " +
" END as negativas " +
" FROM " +
" TbMensagem m " +
" JOIN " +
" m.tbMensagemTipo mt " +
" JOIN " +
" m.tbCaixaMensagemInstituicao cmi " +
" JOIN " +
" cmi.tbInstituicao i " +
" JOIN " +
" m.tbUsuario u " +
" WHERE " +
" m.tbCaixaMensagemInstituicao.cdCaixaInstituicao = 11 " +
" ORDER BY m.cdMensagem DESC "
se nesse codigo acima, eu tirar as linhas
" CASE mt.tpMensagem WHEN 'Consulta' THEN "
" END as negativas " +
ele roda… e se eu trocar o
" (SELECT count(*) " +
" FROM TbMensagemItem mi1 )" +
" JOIN mi1.tbMensagemItemRespostaList mir1 " +
" WHERE mi1.tbMensagem.cdMensagem = 1 AND mir1.icRespostaPositiva = false) " +
por 's'
ele tambem funciona…
mas deixar ocmo esta da errado… alguem pode me ajudar??
obrigado