Segue
SELECT
    tmp.codigo_empresa,
    tmp.codigo_anterior,
    tmp.tipo,
    SUM(tmp.mes01) AS quantidade_mes01,
    SUM(tmp.mes02) AS quantidade_mes02,
    SUM(tmp.mes03) AS quantidade_mes03,
    SUM(tmp.mes04) AS quantidade_mes04,
    SUM(tmp.mes05) AS quantidade_mes05,
    SUM(tmp.mes06) AS quantidade_mes06,
    SUM(tmp.mes07) AS quantidade_mes07,
    SUM(tmp.mes08) AS quantidade_mes08,
    SUM(tmp.mes09) AS quantidade_mes09,
    SUM(tmp.mes10) AS quantidade_mes10,
    SUM(tmp.mes11) AS quantidade_mes11,
    SUM(tmp.mes12) AS quantidade_mes12
FROM
    (SELECT
        its.codigo_empresa,
        ite.codigo_anterior,
        CAST('Saídas' AS CHAR(15)) AS tipo,
SUM(CASE WHEN its.mes_ref = '102015' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes01, SUM(CASE WHEN its.mes_ref = '112015' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes02, SUM(CASE WHEN its.mes_ref = '122015' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes03, SUM(CASE WHEN its.mes_ref = '012016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes04, SUM(CASE WHEN its.mes_ref = '022016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes05, SUM(CASE WHEN its.mes_ref = '032016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes06, SUM(CASE WHEN its.mes_ref = '042016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes07, SUM(CASE WHEN its.mes_ref = '052016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes08, SUM(CASE WHEN its.mes_ref = '062016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes09, SUM(CASE WHEN its.mes_ref = '072016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes10, SUM(CASE WHEN its.mes_ref = '082016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes11, SUM(CASE WHEN its.mes_ref = '092016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes12
    FROM
        ((item_mensal its
        INNER JOIN item ite ON its.codigo_item = ite.codigo)
        INNER JOIN unidade un ON ite.codigo_unidade = un.codigo)
    WHERE
        its.ano_ref >= '2015-10-01' AND
        its.ano_ref <= '2016-09-30' AND
        its.codigo_item = 10016528
    GROUP BY
        "tipo",
        its.codigo_empresa,
        ite.codigo_anterior
    UNION ALL
    SELECT
        its.codigo_empresa,
        ite.codigo_anterior,
        CAST('Entradas' AS CHAR(15)) AS tipo,
SUM(CASE WHEN its.mes_ref = '102015' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes01, SUM(CASE WHEN its.mes_ref = '112015' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes02, SUM(CASE WHEN its.mes_ref = '122015' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes03, SUM(CASE WHEN its.mes_ref = '012016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes04, SUM(CASE WHEN its.mes_ref = '022016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes05, SUM(CASE WHEN its.mes_ref = '032016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes06, SUM(CASE WHEN its.mes_ref = '042016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes07, SUM(CASE WHEN its.mes_ref = '052016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes08, SUM(CASE WHEN its.mes_ref = '062016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes09, SUM(CASE WHEN its.mes_ref = '072016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes10, SUM(CASE WHEN its.mes_ref = '082016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes11, SUM(CASE WHEN its.mes_ref = '092016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes12
    FROM
        ((item_mensal its
        INNER JOIN item ite ON its.codigo_item = ite.codigo)
        INNER JOIN unidade un ON ite.codigo_unidade = un.codigo)
    WHERE
        its.ano_ref >= '2015-10-01' AND
        its.ano_ref <= '2016-09-30' AND
        its.codigo_item = 10016528
    GROUP BY
      "tipo",
      its.codigo_empresa,
      ite.codigo_anterior) tmp
    GROUP BY
      tmp.tipo,
      tmp.codigo_empresa,
      tmp.codigo_anterior
    ORDER BY
      tmp.tipo,
      tmp.codigo_empresa
Em 21/09/2016 16:57, Euler Taveira escreveu:
On 21-09-2016 16:32, Antonio Cesar wrote:
Estou montado esse select e esta muito lento, alguem pode me ajudar?

EXPLAIN ANALYZE. Cadê a consulta?



<<attachment: cgcesarsoares.vcf>>

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a