我有一種情況,需要從一個表中獲取「消耗的數量」,並將其應用於第二個具有「批量」數量的一行或多行的表。我不知道如何更好地形容它,這是我從一個表的角度是指: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