Количество уменьшений из набора результатов в SQL
Это похоже на очень простой вопрос, но я не могу найти правильное решение, поэтому, возможно, я задаю неправильный вопрос.
У меня есть простой набор результатов. Перечисляет одну и ту же часть N раз. Требуется N частей для каждой записи. У этого также есть общее количество под рукой N.
Id | Part | QtyRequired | OnHandQty
1 | 123 | 10 | 100
2 | 123 | 5 | 100
3 | 123 | 22 | 100
так далее..
Как я могу вернуть "Оставшееся" количество для набора результатов, как это..
Id | Part | QtyRequired | OnHandQty | RemainingQty
1 | 123 | 10 | 100 | 90
2 | 123 | 5 | 100 | 85
3 | 123 | 22 | 100 | 63
2 ответа
Решение
Вы можете суммировать количество, необходимое для каждой детали:
Рабочий пример:
DECLARE @Inventory TABLE
(
Id int,
Part int,
QtyRequired INT,
OnHandQty INT
)
INSERT INTO @Inventory (Id, Part, QtyRequired, OnHandQty)
VALUES (1, 123, 10, 100),
(2, 123, 5, 100),
(3, 123, 22, 100)
SELECT
Id
,Part
,QtyRequired
,OnHandQty
,OnHandQty - SUM (QtyRequired) OVER (PARTITION BY Part ORDER BY Id) AS RemainingQty
FROM @Inventory
Если вам нужно знать используемое количество, вы можете включить следующее:
SUM (QtyRequired) OVER (PARTITION BY Part ORDER BY Id) AS QuantityUsed
Вы просто ищете избранный устав?
select id, Part, QtyRequired,OnHandQty, (onhandqty-QtyRequired) as 'RemainingQty' from tablename