Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho um SQL que gera para mim o meu estoque no período que eu colocar. Esse SQL esta funcionando perfeitamente. Segue exemplo:
-- Estoque dia por grade
select
pro.cod_produto,
pro.descricao1 as produto,
cor.descricao as descricao_cor,
me.tamanho,
sum (me.quantidade) as qtd_estoque_dia,
sum(me.empenho) as empenho_diaPreciso de um que me mostre o estoque mês-a-mês e ano-a-ano e não estou conseguindo fazer.
Segue um exemplo do que tentei mais não esta batendo:
-- Estoque dia por grade
select
extract(year from me.data) as ano,
extract(month from me.data) as mes,
pro.cod_produto,
pro.descricao1 as produto,
sum (me.quantidade) as qtd_estoque_diawhere me.data <= 25||'.'||
EXTRACT(MONTH FROM me.data)||'.'||
EXTRACT(YEAR FROM me.data)Existe uma forma de fazer isso?
>
5 minutos atrás, Motta disse:
GROUP BY deve ter as colunas informadas, tente :
select
extract(year from me.data) as ano,
extract(month from me.data) as mes,
pro.cod_produto,
pro.descricao1 as produto,
sum (me.quantidade) as qtd_estoque_dia
from mov_estoque me
inner join produtos pro on pro.produto = me.produto and pro.tipo_prod = 'AC'
where me.data <= 25||'.'||
EXTRACT(MONTH FROM me.data)||'.'||
EXTRACT(YEAR FROM me.data)
group by extract(year from me.data),
extract(month from me.data),
pro.cod_produto,
pro.descricao1
Testei aqui, mais ainda não esta dando certo.
Por exemplo:
em 11/2018 deveria mostrar o valor de estoque 351, mais esta mostrando -113
O que eu entendi é que ele esta trazendo a soma só do mês e ano de 11/2018. Isso para cada mês e ano.
Preciso que ele traga a soma de 11/2018 para traz como esta no WHERE ("where me.data <= ")
ou seja:
01/2018 - mostrar soma desde 01/2018 até a primeira movimentação que é 01/2013
02/2018 - mostrar soma desde 02/2018 até a primeira movimentação que é 01/2013
03/2018 - mostrar soma desde 03/2018 até a primeira movimentação que é 01/2013
Assim terei o estoque correto do mês e anoUse o OVER()
Procure pelo exemplo <cumul_salary>
>
56 minutos atrás, Motta disse:
Use o OVER()
Procure pelo exemplo <cumul_salary>
A versão do Firebird no meu ser vidor é a 2.5. Não consigo utilizar o OVER.
Alguma outra sugestão?
Veja se istoajuda , em geral isto é complicado , não tendo sql com over as vezes é melhor resolver na camada de aplicação.
>
9 minutos atrás, Motta disse:
Veja se istoajuda , em geral isto é complicado , não tendo sql com over as vezes é melhor resolver na camada de aplicação.
É, acho que vai ser pela aplicação mesmo.
Muito obrigado pela ajuda
GROUP BY deve ter as colunas informadas, tente :
from mov_estoque me inner join produtos pro on pro.produto = me.produto and pro.tipo_prod = 'AC' group by extract(year from me.data), extract(month from me.data), pro.cod_produto, pro.descricao1