Кажется, это очень простой вопрос, но я не могу найти правильного решения, поэтому, возможно, я задаю неправильный вопрос.

У меня простой набор результатов. Перечисляет одну и ту же часть 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
0
Travis Peterson 23 Окт 2018 в 23:44

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
3
Michael G 23 Окт 2018 в 20:59

Вы просто ищете оператор select?

select id, Part, QtyRequired,OnHandQty, (onhandqty-QtyRequired) as 'RemainingQty' from tablename

0
Dave Kelly 23 Окт 2018 в 20:52
52957585