我在PostgreSQL中有一个查询,它产生:
itemorder name qty 1 A -20 2 A2 350 3 A 50 4 A -10 5 A2 10
该itemorder列给出了我期望看到的正确的行顺序。我需要从下往上遍历各行,并计算一个新列,该列的初始值为,100并且+ qty对的每一行都使用A。
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
我怎样才能做到这一点?
试试这个
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