Сумма SQL на основе результата - PullRequest
0 голосов
/ 24 октября 2019
pre     qty     cur
--------------------
100      -1      99
99       -10     89
89       10      99

Привет, я хотел бы обновить столбец pre, qty, cur. Я попытался суммировать pre и qty, затем результат cur приведет к следующему столбцу pre для продолжения вычисления.

Пока это мой запрос.

SELECT `id`, `pre` , `qty`, `cur`, `pre`+`qty` AS `cur` FROM `inventory_logs`

Ответы [ 3 ]

1 голос
/ 24 октября 2019

Если это желаемый результат в верхней части вашего вопроса, вы можете использовать LAG для обновления таблицы за один раз вместо обработки одного cur за раз:

UPDATE inventory_logs
SET cur = pr.P
FROM inventory_logs JOIN (SELECT pre, qty, LAG(pre + qty, 0)
    OVER (Partition by pre ORDER BY id asc) AS P
    FROM inventory_logs) as pr
ON inventory_logs.pre = pr.pre;
0 голосов
/ 24 октября 2019

Насколько я понимаю, вы опубликовали ожидаемые результаты в вашем вопросе. Вы можете использовать рекурсивный CTE:

WITH CTE AS(
  SELECT ID,PRE,QTY,PRE+QTY AS CUR FROM inventory_logs WHERE ID=1
  UNION ALL
  SELECT T.ID, C.CUR AS PRE, T.QTY, C.CUR + T.QTY AS CUR
  FROM CTE C
  INNER JOIN inventory_logs T 
  ON T.ID = C.ID+1
)
  SELECT * FROM CTE

Предполагая, конечно, что вы хотите начать расчет с ID =1 и упорядочиваете по ID

0 голосов
/ 24 октября 2019

Попробуйте в sql,

UPDATE inventory_logs SET cur=pre + qty

SELECT id, pre , qty, cur FROM inventory_logs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...