( 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;
Pergunta
Ronaldo A. da Silva
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 SilvaLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.