У меня есть ситуация, когда мне нужно взять "потребленное количество" из одной таблицы и применить его ко второй таблице, в которой есть 1 или более строк, которые являются "объединенными партиями" количеств. Я не уверен, как описать это лучше, вот что я имею в виду с точки зрения таблицы:
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. Я не могу понять, как вы сформулируете запрос, который говорит:
Предположим, что Id - первичный ключ, и целевая БД - SQL 2005.
Edit: Поскольку люди заявляют, что я "не даю достаточно информации, пожалуйста, закройте эту тему" Вот еще: Существует НЕ установленный лот, из которого берется Pool_Consumption, он должен брать из всех лотов, где Pool_Consumption.PoolId = Pooled_Lots.Pool, пока QuantityConsumed не будет либо полностью исчерпан, либо я вычитаю из последнего подмножества строк Pooled_Lots, где Pool_Consumption.PoolId = Pooled_Lots.Pool
Я не знаю, как еще это объяснить. Это не вопрос домашнего задания, это не выдуманное "упражнение для размышления". Мне нужна помощь в попытке понять, как правильно вычесть QuantityConsumed из нескольких строк!