› Fóruns › SQL e PL/SQL › Select with internal join › Select with internal join
Hi @gscoelho!
I think the group by missing clause is on the TB “table”.
Try this sugestion bellow (i include “group by TB2.cd_exercicio” ):
SELECT
TB.icms, TB.cd_exercicio
FROM (SELECT TB2.cd_exercicio,
SUM(CASE
WHEN nr1.cd_natureza_receita >= 1113020000 AND
nr1.cd_natureza_receita <= 1113029999 THEN
DECODE(1, 1, rmsub.vl_realizado, rmsub.valr_arrecadado)
ELSE
NULL
END) AS icms
FROM receita r
INNER JOIN receita_mes rmsub ON rmsub.id_receita = r.id_receita
INNER JOIN elaboracao_receita ersub ON (r.id_elaboracao_receita =
ersub.id_elaboracao_receita)
INNER JOIN natureza_receita nr1 ON (r.id_natureza_receita =
nr1.id_natureza_receita AND
nr1.cd_exercicio =
ersub.cd_exercicio)
INNER JOIN (SELECT elaboracao_receita.cd_exercicio,
receita.id_receita,
receita.id_elaboracao_receita,
receita.id_natureza_receita
FROM receita
JOIN receita_mes ON (receita_mes.id_receita =
receita.id_receita)
JOIN elaboracao_receita ON (elaboracao_receita.id_elaboracao_receita =
receita.id_elaboracao_receita)
JOIN natureza_receita ON (natureza_receita.id_natureza_receita =
receita.id_natureza_receita AND
natureza_receita.cd_exercicio =
elaboracao_receita.cd_exercicio)) TB2 ON (TB2.cd_exercicio =
nr1.cd_exercicio AND
TB2.cd_exercicio =
ersub.cd_exercicio AND
TB2.id_receita =
r.id_receita AND
TB2.id_receita =
rmsub.id_receita AND
TB2.id_elaboracao_receita =
r.id_elaboracao_receita AND
TB2.id_elaboracao_receita =
ersub.id_elaboracao_receita AND
TB2.id_natureza_receita =
r.id_natureza_receita AND
TB2.id_natureza_receita =
nr1.id_natureza_receita)
group by TB2.cd_exercicio -- include group by
) TB
WHERE 1 = 1
AND TB.CD_EXERCICIO = 2013