Fórum Select para retornar saldo do estoque em determinada data #60597
15/04/2009
0
Bom dia pessoal, preciso selecionar o saldo do meu estoque em determinada data, mas não estou conseguindo. O único select que consegui fazer até agora foi esse, mas preciso pegar o estoque do dia 31/03/2009. Do jeito que fiz estou pegando todos itens vendidos e todos itens comprados, alguém sabe como posso fazer? Segue sql abaixo:
select distinct produtos.idproduto, produtos.descricao, produtos.qtdestoque, sum( itensvenda.qtd) as qtdevendida, sum( itenscompra.qtd) as qtdecomprada from produtos left join itenscompra on (produtos.idproduto = itenscompra.idproduto) left join compras on (itenscompra.nrcompra = compras.nrcompra) left join itensvenda on (produtos.idproduto = itensvenda.idproduto) left join vendas on (itensvenda.nrvenda = vendas.nrvenda) group by produtos.idproduto, produtos.descricao, produtos.qtdestoque
Frostlost
Curtir tópico
+ 0
Responder
Posts
15/04/2009
Frostlost
Dei uma melhorada, mas agora preciso somar as quantidades com base numa restrição de uma data. Por exemplo, quero o estoque do dia 31/03/2009
select distinct produtos.idproduto, produtos.descricao, produtos.qtdestoque, coalesce (sum (itensvenda.qtd), 0) as qtdevendida , coalesce (sum( itenscompra.qtd),0) as qtdecomprada, (produtos.qtdestoque + coalesce (sum(itensvenda.qtd),0) - coalesce (sum(itenscompra.qtd),0)) as total from produtos left join itenscompra on (produtos.idproduto = itenscompra.idproduto) left join compras on (itenscompra.nrcompra = compras.nrcompra) left join itensvenda on (produtos.idproduto = itensvenda.idproduto) left join vendas on (itensvenda.nrvenda = vendas.nrvenda) group by produtos.idproduto, produtos.descricao, produtos.qtdestoque
Responder
Gostei + 0
17/04/2009
Frostlost
Segue problema resolvido abaixo, com este SQL sempre vou conseguir o estoque relacionado a uma data passada por parâmetro. Fiquei muito orgulhoso de SQL, espero que ajude a comunidade, ou seja estou fazendo restrições no SUM usando IIF. O objetivo aqui é pegar o valor do estoque atual, subtrair as compras e adicionar as vendas que foram realizadas após a data passada por parâmetro.
select distinct produtos.idproduto, produtos.descricao, produtos.qtdestoque, Sum( IIF( (CAST(VENDAS.DATA as DATE) > :DATAINICIAL AND VENDAS.SITUACAO <> ´CANCELADA´ AND VENDAS.naturezadaoperacao <> ´REMESSA EM CONSIGNAÇÃO´), ITENSVENDA.QTD, 0) ) as QTDEVENDIDA, Sum( IIF( (COMPRAS.DATA > :DATAINICIAL AND COMPRAS.situacao = ´EFETIVADO´), ITENSCOMPRA.QTD, 0) ) as QTDECOMPRADA, (produtos.qtdestoque + Sum( IIF( (CAST(VENDAS.DATA as DATE) > :DATAINICIAL) AND VENDAS.SITUACAO <> ´CANCELADA´ AND VENDAS.naturezadaoperacao <> ´REMESSA EM CONSIGNAÇÃO´, ITENSVENDA.QTD, 0) ) - Sum( IIF( (COMPRAS.DATA > :DATAINICIAL AND COMPRAS.situacao = ´EFETIVADO´), ITENSCOMPRA.QTD, 0) )) as total from produtos left join itenscompra on (produtos.idproduto = itenscompra.idproduto) left join compras on (itenscompra.nrcompra = compras.nrcompra) left join itensvenda on (produtos.idproduto = itensvenda.idproduto) left join vendas on (itensvenda.nrvenda = vendas.nrvenda) WHERE (PRODUTOS.qtdestoque > 0) AND (PRODUTOS.ATIVO = ´S´ or PRODUTOS.ATIVO IS NULL) AND (PRODUTOS.SERVICO = ´N´ or PRODUTOS.SERVICO IS NULL) AND (PRODUTOS.IMPRIMIR = ´S´ or PRODUTOS.IMPRIMIR IS NULL) group by produtos.idproduto, produtos.descricao, produtos.qtdestoque order by produtos.descricao
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)