我有一种情况,需要从一个表中获取“消耗的数量”,并将其应用于第二个具有“批量”数量的一行或多行的表。我不知道如何更好地形容它,这是我从一个表的角度是指:SQL - 从行中减去耗尽值
Table Pooled_Lots
----------------------------
Id Pool Lot Quantity
1 1 1 5
2 1 2 10
3 1 3 4
4 2 1 7
5 3 1 1
6 3 2 5
Table Pool_Consumption
----------------------------
Id PoolId QuantityConsumed
1 1 17
2 2 8
3 3 10
我需要从一个SQL查询产生的行集,将是这样的:
Pool Lot Quantity QuantityConsumed RunningQuantity RemainingDemand SurplusOrDeficit
1 1 5 17 0 12 NULL
1 2 10 17 0 2 NULL
1 3 4 17 2 0 2
2 1 7 8 0 1 -1
3 1 1 10 0 9 NULL
3 2 5 10 0 4 -4
所以, Pool_Consumption.QuantityConsumed需要在Pooled_Lots的行中减去“耗尽值”,其中Pool_Consumption.PoolId = Pooled_Lots.Pool。我想不出你会怎么说出一个查询,说:
- 如果不是在最后一排,AmtConsumedFromLot =数量 - QuantityConsumed如果QuantityConsumed <数量,否则数量
- 如果更多的行,QuantityConsumed = QuantityConsumed - 产品数量
- 循环直到最后一行
- 如果最后一行,AmtConsumedFromLot = QuantityConsumed
假设Id是主键,和所述目标DB是SQL 2 005
编辑:既然人都宣称我是“不给足够的信息,请关闭这个”这里比较:有NO集很多的Pool_Consumption而来,它需要从所有大量吸取借鉴其中Pool_Consumption.PoolId = Pooled_Lots.Pool,直到QuantityConsumed要么完全耗尽或我对减去行Pooled_Lots的最后一个子集,其中Pool_Consumption.PoolId = Pooled_Lots.Pool
我不知道该怎么越解释这一点。这不是一个家庭作业问题,这不是一个虚构的“思考练习”。我需要帮助,试图找出如何正确减去QuantityConsumed对多行!
我不知道为什么现在的人了投票权这个问题,你有一些严重的数据粒度的问题。 “Pool_Consumption”表不指定消耗单位的来源。另外,我修正了一个错字。 -1 – JohnB 2012-02-23 20:00:41
没关系,我不打算去修复所有的拼写错误。至少,花更多的时间在这个问题上直接获取数据!但是,您的设计有缺陷。 (投票结束) – JohnB 2012-02-23 20:04:28
@JohnB这是我目前所面临的问题,尽可能简化并且不会泄露我工作中的机密数据。与其骄傲地宣称我在问一个不值得投票的愚蠢问题,或许你可以启发我在哪里需要添加“粒度”以使我自己能够更容易地产生期望的输出? – Irinotecan 2012-02-23 20:05:48