Jump to content
Fórum Script Brasil
  • 0

View


Ronaldo A. da Silva
 Share

Question

Boa tarde confrades.
Minha primeira vez no fórum.

Estou tendo dificuldades para concluir uma view.

       (
         SELECT estoqini.prod_ei,
                estoqini.emp_ei,
                estoqini.ano_ei,
                estoqini.qtded_ei AS inicio
         FROM estoqini
         WHERE estoqini.ano_ei = 2011::numeric
         ORDER BY estoqini.emp_ei,
                  estoqini.prod_ei,
                  estoqini.ano_ei
       ) inicio ON inicio.emp_ei = produtos.demp_prod AND inicio.prod_ei =
        produtos.dprod_cod

Era para retornar somente os valores de 2011, mas vem zeros.
A condição where não deve estar sendo considerada, condição está definida errada ou no local errado.

Se coloco essa parte em um script normal funciona, mas quando esta dentro da view não.

 

A view inteira:

CREATE OR REPLACE VIEW public.relat_compras(
    empresa,
    produto,
    nome,
    codigo_marca,
    marca,
    referencia,
    dt_ul_compra,
    qtde_ul_compra,
    vr_ul_compra,
    dt_ul_venda,
    estoque_inicial,
    qtde_comprada,
    qtde_vendida,
    qtde_c_ano,
    qtde_c_semestre,
    qtde_c_mes,
    qtde_v_ano,
    qtde_v_semestre,
    qtde_v_mes,
    estoque_atual)
AS
  SELECT produtos.demp_prod AS empresa,
         produtos.dprod_cod AS produto,
         cadprod.prod_nome AS nome,
         marcas.cod_marc AS codigo_marca,
         marcas.nome_marc AS marca,
         refmarcas.ref_marc AS referencia,
         produtos.dprod_duc AS dt_ul_compra,
         produtos.dprod_quc AS qtde_ul_compra,
         produtos.dprod_pcoc AS vr_ul_compra,
         produtos.dprod_duv AS dt_ul_venda,
         COALESCE(inicio.inicio, 0::numeric) AS estoque_inicial,
         COALESCE(entradas.entrou, 0::numeric) AS qtde_comprada,
         COALESCE(saidas.saiu, 0::numeric) AS qtde_vendida,
         COALESCE(entradasp.entroup, 0::numeric) AS qtde_c_ano,
         COALESCE(entradasu.entrouu, 0::numeric) AS qtde_c_semestre,
         COALESCE(entradasa.entroua, 0::numeric) AS qtde_c_mes,
         COALESCE(saidasp.saiup, 0::numeric) AS qtde_v_ano,
         COALESCE(saidasu.saiuu, 0::numeric) AS qtde_v_semestre,
         COALESCE(saidasa.saiua, 0::numeric) AS qtde_v_mes,
         COALESCE(inicio.inicio, 0::numeric) + COALESCE(entradas.entrou,
          0::numeric) - COALESCE(saidas.saiu, 0::numeric) AS estoque_atual
  FROM produtos
       LEFT JOIN
       (
         SELECT estoqini.prod_ei,
                estoqini.emp_ei,
                estoqini.ano_ei,
                estoqini.qtded_ei AS inicio
         FROM estoqini
         WHERE estoqini.ano_ei = 2011::numeric
         ORDER BY estoqini.emp_ei,
                  estoqini.prod_ei,
                  estoqini.ano_ei
       ) inicio ON inicio.emp_ei = produtos.demp_prod AND inicio.prod_ei =
        produtos.dprod_cod
       LEFT JOIN
       (
         SELECT itensnfe.emp_inf,
                itensnfe.codprod_inf,
                sum(itensnfe.qtdea_prod_inf) AS entrou
         FROM itensnfe
         GROUP BY itensnfe.emp_inf,
                  itensnfe.codprod_inf
       ) entradas ON entradas.emp_inf = produtos.demp_prod AND
        entradas.codprod_inf = produtos.dprod_cod
       LEFT JOIN
       (
         SELECT itensnfe.emp_inf,
                itensnfe.codprod_inf,
                sum(itensnfe.qtdea_prod_inf) AS entroup
         FROM itensnfe
         WHERE itensnfe.datae_inf >=(date_trunc('month' ::text, 'now'
          ::text::date::timestamp with time zone) - '1 year' ::interval) AND
               itensnfe.datae_inf <=(date_trunc('month' ::text, 'now'
                ::text::date::timestamp with time zone) - '1 day' ::interval)
         GROUP BY itensnfe.emp_inf,
                  itensnfe.codprod_inf
       ) entradasp ON entradasp.emp_inf = produtos.demp_prod AND
        entradasp.codprod_inf = produtos.dprod_cod
       LEFT JOIN
       (
         SELECT itensnfe.emp_inf,
                itensnfe.codprod_inf,
                sum(itensnfe.qtdea_prod_inf) AS entrouu
         FROM itensnfe
         WHERE itensnfe.datae_inf >=(date_trunc('month' ::text, 'now'
          ::text::date::timestamp with time zone) - '6 mons' ::interval) AND
               itensnfe.datae_inf <=(date_trunc('month' ::text, 'now'
                ::text::date::timestamp with time zone) - '1 day' ::interval)
         GROUP BY itensnfe.emp_inf,
                  itensnfe.codprod_inf
       ) entradasu ON entradasu.emp_inf = produtos.demp_prod AND
        entradasu.codprod_inf = produtos.dprod_cod
       LEFT JOIN
       (
         SELECT itensnfe.emp_inf,
                itensnfe.codprod_inf,
                sum(itensnfe.qtdea_prod_inf) AS entroua
         FROM itensnfe
         WHERE itensnfe.datae_inf >(date_trunc('month' ::text, 'now'
          ::text::date::timestamp with time zone) - '1 day' ::interval)
         GROUP BY itensnfe.emp_inf,
                  itensnfe.codprod_inf
       ) entradasa ON entradasa.emp_inf = produtos.demp_prod AND
        entradasa.codprod_inf = produtos.dprod_cod
       LEFT JOIN
       (
         SELECT itenspedv.emp_pedi,
                itenspedv.codr_pedi,
                sum(itenspedv.qtdep_pedi) AS saiu
         FROM itenspedv
         WHERE ((
                  SELECT pedidos.status_pedv
                  FROM pedidos
                  WHERE pedidos.emp_pedv = itenspedv.emp_pedi AND
                        pedidos.num_pedv = itenspedv.cod_pedi
               )) = 3::numeric
         GROUP BY itenspedv.emp_pedi,
                  itenspedv.codr_pedi
       ) saidas ON saidas.emp_pedi = produtos.demp_prod AND saidas.codr_pedi =
        produtos.dprod_cod
       LEFT JOIN
       (
         SELECT itenspedv.emp_pedi,
                itenspedv.codr_pedi,
                sum(itenspedv.qtdep_pedi) AS saiup
         FROM itenspedv
         WHERE ((
                  SELECT pedidos.status_pedv
                  FROM pedidos
                  WHERE pedidos.emp_pedv = itenspedv.emp_pedi AND
                        pedidos.num_pedv = itenspedv.cod_pedi
               )) = 3::numeric AND
               itenspedv.dat_pedi >=(date_trunc('month' ::text, 'now'
                ::text::date::timestamp with time zone) - '1 year' ::interval) AND
               
               itenspedv.dat_pedi <=(date_trunc('month' ::text, 'now'
                ::text::date::timestamp with time zone) - '1 day' ::interval)
         GROUP BY itenspedv.emp_pedi,
                  itenspedv.codr_pedi
       ) saidasp ON saidasp.emp_pedi = produtos.demp_prod AND saidasp.codr_pedi
        = produtos.dprod_cod
       LEFT JOIN
       (
         SELECT itenspedv.emp_pedi,
                itenspedv.codr_pedi,
                sum(itenspedv.qtdep_pedi) AS saiuu
         FROM itenspedv
         WHERE ((
                  SELECT pedidos.status_pedv
                  FROM pedidos
                  WHERE pedidos.emp_pedv = itenspedv.emp_pedi AND
                        pedidos.num_pedv = itenspedv.cod_pedi
               )) = 3::numeric AND
               itenspedv.dat_pedi >=(date_trunc('month' ::text, 'now'
                ::text::date::timestamp with time zone) - '6 mons' ::interval) AND
               
               itenspedv.dat_pedi <=(date_trunc('month' ::text, 'now'
                ::text::date::timestamp with time zone) - '1 day' ::interval)
         GROUP BY itenspedv.emp_pedi,
                  itenspedv.codr_pedi
       ) saidasu ON saidasu.emp_pedi = produtos.demp_prod AND saidasu.codr_pedi
        = produtos.dprod_cod
       LEFT JOIN
       (
         SELECT itenspedv.emp_pedi,
                itenspedv.codr_pedi,
                sum(itenspedv.qtdep_pedi) AS saiua
         FROM itenspedv
         WHERE ((
                  SELECT pedidos.status_pedv
                  FROM pedidos
                  WHERE pedidos.emp_pedv = itenspedv.emp_pedi AND
                        pedidos.num_pedv = itenspedv.cod_pedi
               )) = 3::numeric AND
               itenspedv.dat_pedi >(date_trunc('month' ::text, 'now'
                ::text::date::timestamp with time zone) - '1 day' ::interval)
         GROUP BY itenspedv.emp_pedi,
                  itenspedv.codr_pedi
       ) saidasa ON saidasa.emp_pedi = produtos.demp_prod AND saidasa.codr_pedi
        = produtos.dprod_cod
       LEFT JOIN cadprod ON cadprod.prod_cod = produtos.dprod_cod
       LEFT JOIN marcas ON marcas.cod_marc = cadprod.prod_comp_id2
       LEFT JOIN refmarcas ON refmarcas.cod_ref = cadprod.prod_comp_id3
       LEFT JOIN empresas ON empresas.emp_codi = produtos.demp_prod;

Agradeço qualquer ajuda.
 

Edited by Ronaldo A. da Silva
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...