Olá pessoal,
Estou quebrando cabeça a uns 2 dias e não consegui resolver o problema…
A minha ideia é realizar um COUNT de todas as ocorrências agrupados por MÊS…
Por exemplo:
Ocorrências: -------------- MÊS:
7 ---------------------------- 07/2013
21 ---------------------------- 08/2013
5 ---------------------------- 09/2013
21 ---------------------------- 10/2013
2 ---------------------------- 11/2013
A consulta abaixo funciona no meu banco oracle:
SELECT count(*),to_char(MH.MDH_DT_RECEPCAODADO, 'mm/yyyy') as "mm/yyyy"
FROM MED_HIDROMETEOROLOGICA MH
LEFT JOIN CARACTERIZACAO_VHM CV ON MH.MDH_CVH_ID = CV.CVH_ID
LEFT JOIN VARIAVEL V ON CV.CVH_VAR_ID = V.VAR_ID
LEFT JOIN ESTACAO E ON CV.CVH_EST_ID = E.EST_ID
LEFT JOIN ORGAO_ESTACAO OE ON E.EST_ID = OE.OES_EST_ID
LEFT JOIN ORGAO O ON O.ORG_ID = OE.OES_ORG_ID
WHERE MH.MDH_DT_RECEPCAODADO
IN
(
SELECT MIN(MH.MDH_DT_RECEPCAODADO)
FROM MED_HIDROMETEOROLOGICA MH
LEFT JOIN CARACTERIZACAO_VHM CV ON MH.MDH_CVH_ID = CV.CVH_ID
LEFT JOIN VARIAVEL V ON CV.CVH_VAR_ID = V.VAR_ID
LEFT JOIN ESTACAO E ON CV.CVH_EST_ID = E.EST_ID
LEFT JOIN ORGAO_ESTACAO OE ON E.EST_ID = OE.OES_EST_ID
LEFT JOIN ORGAO O ON O.ORG_ID = OE.OES_ORG_ID
WHERE o.org_id IS NOT NULL AND V.VAR_ID IN(1,3,4)
GROUP by O.ORG_ID
)
GROUP BY to_char(MH.MDH_DT_RECEPCAODADO, 'mm/yyyy') ORDER BY 2;
Porém, quando tentei converter:
SELECT COUNT(md), MONTH(md.mdhDtRecepcaodado) FROM MedHidrometeorologica md
LEFT JOIN md.mdhCvhId cv
LEFT JOIN cv.cvhVarId va
LEFT JOIN cv.cvhEstId es
LEFT JOIN es.orgaoEstacaoLista oe
WHERE md.mdhDtRecepcaodado IN (
SELECT MIN( md.mdhDtRecepcaodado ) FROM MedHidrometeorologica md
LEFT JOIN md.mdhCvhId cv
LEFT JOIN cv.cvhVarId va
LEFT JOIN cv.cvhEstId es
LEFT JOIN es.orgaoEstacaoLista oe
WHERE oe.oesOrgId.orgId IS NOT NULL AND va.cvhVarId.varId IN (1,3,4)
GROUP BY oe.oesOrgId.orgId )
GROUP BY MONTH(md.mdhDtRecepcaodado)
ORDER BY 2;
Foi me apresentado o seguinte erro:
e = (java.lang.IllegalArgumentException) java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing the query [SELECT COUNT(md), MONTH(md.mdhDtRecepcaodado) FROM MedHidrometeorologica md LEFT JOIN md.mdhCvhId cv LEFT JOIN cv.cvhVarId va LEFT JOIN cv.cvhEstId es LEFT JOIN es.orgaoEstacaoLista oe WHERE md.mdhDtRecepcaodado IN ( SELECT MIN( md.mdhDtRecepcaodado ) FROM MedHidrometeorologica md LEFT JOIN md.mdhCvhId cv LEFT JOIN cv.cvhVarId va LEFT JOIN cv.cvhEstId es LEFT JOIN es.orgaoEstacaoLista oe WHERE oe.oesOrgId.orgId IS NOT NULL AND va.cvhVarId.varId IN (1,3,4) GROUP BY oe.oesOrgId.orgId ) GROUP BY MONTH(md.mdhDtRecepcaodado)ORDER BY 2], line 1, column 23: unexpected token [(].
Internal Exception: NoViableAltException(83@[()* loopback of 383:9: (d= DOT right= attribute )*])
Alguém pode me ajudar? Será se essa consulta poderia ser mais simples trazendo o mesmo resultado?
[]s