Pular para o conteúdo

Fóruns SQL e PL/SQL Select with internal join Select with internal join

#105731
FernandaAc
Participante

    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