Mozar,

Depois de ler a técnica tentei de todo jeito mas não fui muito feliz...

A 1 Parte com Inner, ficou muito RAPIDO
Acho que fiz errado , na segunda parte.... pq piorou o tempo da query
anterior

essa é a query

(ja tomei de uns 8x0 dela)




------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


SELECT

     a.sg_uf,c.co_tp_complemento
    ,DECODE(c.co_tp_complemento,'1','L','2','M','3','C')ds_tp_complemento
    ,SUM(NVL(a.qt_saldo_ano_anterior,0))qt_saldo_ano_anterior
    ,SUM(NVL(a.qt_recebido,0))qt_recebido
    ,SUM(NVL(remRec.qt_rem_recebido,0))qt_rem_recebido
    ,SUM(NVL(remEfe.qt_rem_efetuado,0))qt_rem_efetuado
    ,SUM(NVL(a.qt_saldo_ano_anterior,0) +
(NVL(a.qt_recebido,0)+NVL(remRec.qt_rem_recebido,0)+NVL(remEfe.qt_rem_efetuado,0)))
qt_total_livros

FROM simad.i_livro_pnl c  , simad.i_livro_distribuido_pnl a

        LEFT OUTER JOIN

        (SELECT
r.an_programa,r.nu_seq_livro,r.nu_seq_destino,r.nu_seq_prog_acao_distr,
              sum(r.qt_remanejamento_recebido) qt_rem_recebido

         FROM simad.i_remanejamento_pnl r
         WHERE r.nu_seq_destino > 0
               AND r.an_programa = '2010'
               AND r.nu_seq_prog_acao_distr = 1

        GROUP BY r.an_programa, r.nu_seq_livro, r.nu_seq_destino,
r.nu_seq_prog_acao_distr)remRec

        ON  remRec.nu_seq_livro = a.nu_seq_livro AND remRec.nu_seq_destino =
a.nu_seq_entidade


        LEFT OUTER JOIN

        (SELECT
r.an_programa,r.nu_seq_livro,r.nu_seq_origem,r.nu_seq_prog_acao_distr,
              sum(r.qt_remanejamento_efetuado) qt_rem_efetuado

         FROM simad.i_remanejamento_pnl r

         WHERE r.nu_seq_origem > 0
               AND r.an_programa = '2010'
               AND r.nu_seq_prog_acao_distr = 1

         GROUP BY r.an_programa, r.nu_seq_livro, r.nu_seq_origem,
r.nu_seq_prog_acao_distr)remEfe

        ON  remEfe.nu_seq_livro = a.nu_seq_livro

        AND remEfe.nu_seq_origem = a.nu_seq_entidade

WHERE a.nu_seq_livro = c.nu_seq_livro
  AND a.an_programa = '2010'
  AND a.nu_seq_prog_acao_distr = 1
  AND a.co_tp_entidade IN ('10','28','43')

GROUP BY a.sg_uf, c.co_tp_complemento,
DECODE(c.co_tp_complemento,'1','L','2','M','3','C')

ORDER BY a.sg_uf,c.co_tp_complemento;




->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


Depois de tentar aplicar a tecnica parei aqui, mas ficou pior, com certeza
eu errei


->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>






SELECT

     a.sg_uf,c.co_tp_complemento
    ,DECODE(c.co_tp_complemento,'1','L','2','M','3','C')ds_tp_complemento
    ,SUM(NVL(a.qt_saldo_ano_anterior,0))qt_saldo_ano_anterior
    ,SUM(NVL(a.qt_recebido,0))qt_recebido
    ,SUM(NVL(remRec.qt_rem_recebido,0))qt_rem_recebido
    ,SUM(NVL(remEfe.qt_rem_efetuado,0))qt_rem_efetuado
    ,SUM(NVL(a.qt_saldo_ano_anterior,0) +
(NVL(a.qt_recebido,0)+NVL(remRec.qt_rem_recebido,0)+NVL(remEfe.qt_rem_efetuado,0)))
qt_total_livros

FROM simad_fnde.i_livro_pnl c  , simad_fnde.i_livro_distribuido_pnl a

        INNER JOIN
        (SELECT

r.an_programa,r.nu_seq_livro,r.nu_seq_destino,r.nu_seq_prog_acao_distr,
              sum(r.qt_remanejamento_recebido) qt_rem_recebido

         FROM simad_fnde.i_remanejamento_pnl r
         WHERE r.nu_seq_destino > 0
               AND r.an_programa = '2010'
               AND r.nu_seq_prog_acao_distr = 1

        GROUP BY r.an_programa, r.nu_seq_livro, r.nu_seq_destino,
r.nu_seq_prog_acao_distr)
    remRec     ON  remRec.nu_seq_livro = a.nu_seq_livro AND
remRec.nu_seq_destino = a.nu_seq_entidade


    INNER JOIN
        (SELECT

r.an_programa,r.nu_seq_livro,r.nu_seq_origem,r.nu_seq_prog_acao_distr,
              sum(r.qt_remanejamento_efetuado) qt_rem_efetuado

         FROM simad_fnde.i_remanejamento_pnl r

         WHERE r.nu_seq_origem > 0
               AND r.an_programa = '2010'
               AND r.nu_seq_prog_acao_distr = 1

         GROUP BY r.an_programa, r.nu_seq_livro, r.nu_seq_origem,
r.nu_seq_prog_acao_distr)
     remEfe  ON  remEfe.nu_seq_livro = a.nu_seq_livro AND
remEfe.nu_seq_origem = a.nu_seq_entidade

WHERE a.nu_seq_livro = c.nu_seq_livro
  AND a.an_programa = '2010'
  AND a.nu_seq_prog_acao_distr = 1
  AND a.co_tp_entidade IN ('10','28','43')

GROUP BY a.sg_uf, c.co_tp_complemento,
DECODE(c.co_tp_complemento,'1','L','2','M','3','C')





UNION ALL





SELECT

     a.sg_uf,c.co_tp_complemento
    ,DECODE(c.co_tp_complemento,'1','L','2','M','3','C')ds_tp_complemento
    ,SUM(NVL(a.qt_saldo_ano_anterior,0))qt_saldo_ano_anterior
    ,SUM(NVL(a.qt_recebido,0))qt_recebido
    ,SUM(NVL(remRec.qt_rem_recebido,0))qt_rem_recebido
    --,SUM(NVL(remEfe.qt_rem_efetuado,0))qt_rem_efetuado
    --,SUM(NVL(a.qt_saldo_ano_anterior,0) +
(NVL(a.qt_recebido,0)+NVL(remRec.qt_rem_recebido,0)+NVL(remEfe.qt_rem_efetuado,0)))
qt_total_livros

FROM simad_fnde.i_livro_pnl c  , simad_fnde.i_livro_distribuido_pnl a

        INNER JOIN
        (SELECT

r.an_programa,r.nu_seq_livro,r.nu_seq_destino,r.nu_seq_prog_acao_distr,
              sum(r.qt_remanejamento_recebido) qt_rem_recebido

         FROM simad_fnde.i_remanejamento_pnl r
         WHERE r.nu_seq_destino > 0
               AND r.an_programa = '2010'
               AND r.nu_seq_prog_acao_distr = 1

        GROUP BY r.an_programa, r.nu_seq_livro, r.nu_seq_destino,
r.nu_seq_prog_acao_distr)
    remRec     ON  remRec.nu_seq_livro = a.nu_seq_livro AND
remRec.nu_seq_destino = a.nu_seq_entidade


    INNER JOIN
        (SELECT

r.an_programa,r.nu_seq_livro,r.nu_seq_origem,r.nu_seq_prog_acao_distr,
              sum(r.qt_remanejamento_efetuado) qt_rem_efetuado

         FROM simad_fnde.i_remanejamento_pnl r

         WHERE r.nu_seq_origem > 0
               AND r.an_programa = '2010'
               AND r.nu_seq_prog_acao_distr = 1

         GROUP BY r.an_programa, r.nu_seq_livro, r.nu_seq_origem,
r.nu_seq_prog_acao_distr)
    remEfe  ON  remEfe.nu_seq_livro = a.nu_seq_livro AND
remEfe.nu_seq_origem = a.nu_seq_entidade



WHERE NOT EXISTS(
                  SELECT
                          1
                  FROM simad_fnde.i_livro_pnl ilp  ,
simad_fnde.i_livro_distribuido_pnl ild

                  WHERE ild.nu_seq_livro = ilp.nu_seq_livro
                        AND ild.an_programa = '2010'
                        AND ild.nu_seq_prog_acao_distr = 1
                        AND ild.co_tp_entidade IN ('10','28','43')

                  )

GROUP BY a.sg_uf, c.co_tp_complemento,
DECODE(c.co_tp_complemento,'1','L','2','M','3','C')
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a