Ho una situazione in cui devo prendere una "quantità consumata" da una tabella e applicarla a una seconda tabella che contiene 1 o più righe "lotti raggruppati" di quantità . Non sono sicuro di come descriverlo meglio, ecco cosa voglio dire dal punto di vista tabella:SQL - Sottrai un valore di svuotamento dalle righe
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
Ho bisogno di un set di righe risultante da una query SQL che sarebbe simile:
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
Quindi, Pool_Consumption.QuantityConsumed deve essere un "valore di svuotamento" sottratto alle righe da Pooled_Lots dove Pool_Consumption.PoolId = Pooled_Lots.Pool. Io non riesco a capire come si potrebbe affermare una query che dice:
- Se non sull'ultima fila, AmtConsumedFromLot = Quantità - QuantityConsumed se QuantityConsumed < Quantità, altro Quantità
- Se più righe, QuantityConsumed = QuantityConsumed - Quantità
- loop fino all'ultima fila
- Se ultima fila, AmtConsumedFromLot = QuantityConsumed
supponga Id è una chiave primaria, e l'obiettivo è DB SQL 2 005.
Edit: Dal momento che le persone proclamano che sono "non dare abbastanza informazioni, si prega di chiudere questo" Qui è più: C'è NO insieme tanto che il Pool_Consumption attinge, ha bisogno di attingere tutti i lotti dove Pool_Consumption.PoolId = Pooled_Lots.Pool, finché QuantityConsumed non è completamente esaurito o sto sottraendo all'ultimo sottogruppo di Pooled_Lots dove Pool_Consumption.PoolId = Pooled_Lots.Pool
Non so come spiegarlo più. Questa non è una domanda a casa, questo non è un "esercizio di pensiero" inventato. Ho bisogno di aiuto per cercare di capire come sottrarre correttamente QuantityConsumed contro più righe!
non so il motivo per cui le persone sono up-voto a questa domanda, si dispone di alcuni gravi problemi di dati granularità. La tabella 'Pool_Consumption' non specifica il lotto da cui provengono le unità consumate. Inoltre, ho corretto un refuso. -1 – JohnB
Non importa, non mi preoccuperò di correggere tutti i tuoi errori di battitura. Per lo meno, dedica un po 'più di tempo a raccogliere i dati direttamente su questa domanda! Tuttavia, il tuo design è imperfetto per cominciare. (votato per chiudere) – JohnB
@JohnB Questo è ciò a cui sono attualmente confrontato, semplificato il più possibile e senza divulgare dati riservati dal mio lavoro.Invece di essere arrogante e proclamante, sto facendo una domanda stupida e indegna di voti, forse mi puoi illuminare su dove devo aggiungere "granularità" per arrivare a un punto in cui posso produrre più facilmente l'output desiderato? – Irinotecan