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