Ir para conteúdo
Fórum Script Brasil
  • 0

View


Ronaldo A. da Silva

Pergunta

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.
 

Editado por Ronaldo A. da Silva
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...