我有一个筒仓,我从不同的供应商处购买材料(每次我这样做,添加的材料都有很多相关的数字)并将它们混合在里面。然后我从这个筒仓中消耗混合材料。
我希望能够使用SQL计算任何特定时刻筒仓上存在的比例。
我知道如何使用顺序编程来完成此操作,但它必须是在SQL中执行此操作的方法。
我所拥有的表格是一个历史性的运动,包含计算所需的所有信息:
这是一个用于测试的SQL小提琴:http://sqlfiddle.com/#!3/4ca50/1
在这个例子中,初始移动是买入10,000手数1000,然后消耗1.000(剩余9.000),然后再购买5.000手2000手。
现在,如果我在那一刻运行所需的查询,它应该返回:
拍品1000:9.000单位(64,29%)
Lot 2000:5.000单位(35,71%)
接下来有两个消耗总共4.000个单位,所以在筒仓的那个点还剩下10.000个。
如果我在此之前运行查询,它应该保持相同的百分比但不同的数量:
拍品1000:6.429单位(64,29%)
Lot 2000:3.571单位(35,71%)
然后再购买8.000单位的批次3.000,在筒仓中总共有18.000,所以预期产量是:
拍品1000:6.429单位(35,71%)
Lot 2000:3.571单位(19,83%)
Lot 3000:8.000单位(44,44%)
最后在2.000的最后一次消耗之后,剩下16,000个相同的百分比:
拍品1000:5.715单位(35,71%)
Lot 2000:3.173单位(19,83%)
Lot 3000:7.112单位(44,44%)
我希望你有这个想法...基本上每次购买都会改变成分的百分比,每次消费都会保持比例但会改变数量。
我不知道从哪里开始查询...也许在纯SQL中甚至不可行?