Tsql 已购地块的计算余额
我有一份按日期列出的购物清单。例如: 项目代码、采购日期、采购数量Tsql 已购地块的计算余额,tsql,Tsql,我有一份按日期列出的购物清单。例如: 项目代码、采购日期、采购数量 三十、 2012年1月1日,10 三十、 2012年1月10日,5 对于该商品,我有一个对应的销售交易记录: 项目、销售日期、销售数量 三十、 2012年1月2日-5日 三十、 2012年1月9日-3日 三十、 2012年1月11日-3 我希望得到一个SQL查询(没有光标),以获得每个采购订单数量的余额。即,将每次购买(先进先出)运行到0。(用于账龄存货) 如何将采购与销售合并,以获得每个采购库存批次的剩余余额?这在没有
- 三十、 2012年1月1日,10
- 三十、 2012年1月10日,5
- 三十、 2012年1月2日-5日
- 三十、 2012年1月9日-3日
- 三十、 2012年1月11日-3
;with cte as
(
select itemcode, purchasedate as tdate, purchaseqty as qty from purchases
union
select itemcode, salesdate, salesqty from sales
)
select
t1.*,
SUM(t2.qty)
from cte t1
left join cte t2
on t1.tdate>=t2.tdate
and t1.item = t2.item
group by t1.item, t1.pdate, t1.qty
为了在任何特定时间获得剩余的股票,相同的委托人适用
select p1.*,
case when (select SUM(abs(qty)) from sales) > SUM(p2.qty) then 0
else SUM(p2.qty) - (select SUM(abs(qty)) from sales) end as stockremaining
from purchases p1
left join purchases p2 on p1.item = p2.item
and p2.purchasedate <= p1.purchasedate
group by p1.purchasedate, p1.item, p1.qty
一个连续的总数将给我在任何日期的库存,但不是一个购买批次上剩余的库存。我一直在进行这方面的分析,但它没有给出所需的结果。谢谢。这使我走上了正确的轨道。完成后将发布最终SQL以供参考您使用的SQL server版本是什么?您想要的结果是什么?如果您可以发布实际的预期结果记录,那么理解您要查找的内容就会简单得多。另外,了解您使用的SQL Server的版本也很重要。@RichardVivian您是否会像您所说的那样发布最终的SQL代码?我也有同样的问题,正在寻找一个解决方案。谢谢
1 2012-01-01 10 0
1 2012-01-10 5 4