SQL上的序列依赖计算

时间:2015-11-26 10:51:04

标签: sql sql-server

我有一个筒仓,我从不同的供应商处购买材料(每次我这样做,添加的材料都有很多相关的数字)并将它们混合在里面。然后我从这个筒仓中消耗混合材料。

我希望能够使用SQL计算任何特定时刻筒仓上存在的比例。

我知道如何使用顺序编程来完成此操作,但它必须是在SQL中执行此操作的方法。

我所拥有的表格是一个历史性的运动,包含计算所需的所有信息:

  • ID
  • 日期
  • 批号(仅在购买时才相关)
  • 运动类型(买(1)或消费(0))
  • 数量

这是一个用于测试的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中甚至不可行?

0 个答案:

没有答案