Untitled

 avatar
unknown
plain_text
3 years ago
4.9 kB
3
Indexable
WITH DESCRICAO as (
    SELECT
                ROW_NUMBER() OVER(PARTITION BY codigo ORDER BY codigo DESC) as REPETE,
                codigo,
                d.rec_descricao,
                previsao_atualizada,
                receita_realizada,
                deducao_fundeb,
                outras_deducoes,
                intraorçamentario
    FROM cp_2207 as D
             INNER JOIN
         (
             SELECT codigo,
                    COALESCE(SUM((movimentos.identificador_111 - movimentos.identificador_112) + (movimentos.identificador_121 - movimentos.identificador_122 - movimentos.identificador_123 + movimentos.identificador_124)), 0)     AS previsao_atualizada,
                    SUM(CASE WHEN (movimentos.categoria_4320 NOT ilike '47%'  AND movimentos.categoria_4320 NOT  ilike '48%') THEN (movimentos.identificador_131 - movimentos.identificador_132)ELSE 0 END )    AS receita_realizada,
                    SUM(CASE WHEN (movimentos.FUNDEB=105  AND (movimentos.categoria_4320 NOT ilike '97%' AND movimentos.categoria_4320 NOT  ilike '98%')) THEN ((movimentos.identificador_141 - movimentos.identificador_142) + (movimentos.identificador_151 - movimentos.identificador_152)) ELSE 0 END) AS deducao_fundeb,
                    SUM(CASE WHEN (movimentos.FUNDEB<>105  AND (movimentos.categoria_4320 NOT ilike '97%' AND movimentos.categoria_4320 NOT  ilike '98%')) THEN ((movimentos.identificador_141 - movimentos.identificador_142) + (movimentos.identificador_151 - movimentos.identificador_152)) ELSE 0 END) AS outras_deducoes,
                    SUM(CASE WHEN (movimentos.categoria_4320 ilike '47%'  OR movimentos.categoria_4320 ilike '48%' OR  movimentos.categoria_4320 ilike '97%' OR movimentos.categoria_4320 ilike '98%') THEN ((movimentos.identificador_131 - movimentos.identificador_132) - (movimentos.identificador_141 - movimentos.identificador_142) - (movimentos.identificador_151 - movimentos.identificador_152))ELSE 0 END) AS intraorçamentario
             FROM (SELECT
                       cp_22.rc_caracteristica as FUNDEB,
                       cp_22.rc_categoria_4320 as categoria_4320,
                       COALESCE(cp_07.rec_categoria_siope, cp_07.rec_classificacao_stn) as Codigo,
                       cp_07.rec_descricao AS descrição_receita,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 111 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_111,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 112 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_112,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 121 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_121,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 122 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_122,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 123 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_123,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 124 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_124,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 131 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_131,SUM(CASE WHEN cp_00.mv_tipo_movimento = 132 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_132,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 141 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_141,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 142 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_142,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 151 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_151,
                       SUM(CASE WHEN cp_00.mv_tipo_movimento = 152 THEN cp_00.mv_valor_movimento ELSE 0 END) AS identificador_152
                   FROM cp_2200 cp_00
                            INNER JOIN cp_2221 cp_22 ON cp_22.rc_receita = cp_00.mv_receita
                            INNER JOIN cp_2207 cp_07 ON cp_07.rec_classificacao_4320=cp_22.rc_categoria_4320
                   WHERE cp_00.mv_tipo_movimento IN (111, 112, 121, 122, 123, 131, 132, 141, 142, 151, 152)
                     AND cp_00.integridade IS TRUE
                     AND EXTRACT(MONTH FROM cp_00.mv_data) BETWEEN 1 AND 2

                   GROUP BY
                       cp_22.rc_caracteristica,cp_00.mv_receita,cp_22.rc_categoria_4320,cp_07.rec_categoria_siope,
                       cp_07.rec_classificacao_stn,cp_07.rec_descricao,
                       cp_00.mv_tipo_movimento, cp_00.mv_valor_movimento) AS movimentos
             GROUP BY codigo
             ORDER BY codigo) AS TESTE
         ON SUBSTRING (D.rec_classificacao_4320,2,15) = teste.codigo
    WHERE rec_classificacao_4320 ILIKE '4%')
SELECT* FROM DESCRICAO
WHERE REPETE = 1
ORDER BY codigo
Editor is loading...