admin

如何从下往上计算累计和?

sql

我在PostgreSQL中有一个查询,它产生:

itemorder   name    qty
  1          A       -20
  2          A2       350
  3          A        50
  4          A        -10
  5          A2       10

itemorder列给出了我期望看到的正确的行顺序。我需要从下往上遍历各行,并计算一个新列,该列的初始值为,100并且+ qty对的每一行都使用A

itemorder   name    qty       modifyed_sum
  1          A       -20          120       / 140 + (-20)
  2          A2       350         140       / not A
  3          A        50          140       / 90 + 50
  4          A        -10         90        / 100 +  (-10)
  5          A2       10          100       / not A

我怎样才能做到这一点?


阅读 183

收藏
2021-07-01

共1个答案

admin

试试这个

SELECT 100+ Sum(CASE WHEN name = 'a' THEN qty ELSE 0 END)OVER(ORDER BY itemorder DESC) as modifyed_sum,
       qty,
       name,
       itemorder
FROM   Yourtable
ORDER  BY itemorder ASC

其他方式

SELECT 100 + (SELECT Sum(CASE WHEN b.name = 'a' THEN b.qty ELSE 0 END)
              FROM   yourtable  b
              WHERE  a.itemorder <= b.itemorder),
       qty,
       name,
       itemorder
FROM   yourtable a
ORDER  BY itemorder ASC
2021-07-01