我有一个帐户交易表,其中列出了帐户中的所有活动。如何根据其他行计算总和
id qty
1 100
2 200
3 -50
4 20
的id列是实时活动1
后indecation作为2
hapend和3
后4
发生。
我需要添加一列,其每每一行给出当前总和:
id qty total_sum
1 100 100 /0 + 100
2 200 300 /100 + 200
3 -50 250 /300 - 50
4 20 270 /250 + 20
这是很简单的。不过,我的表很庞大,它包含非常旧的行,它们的数据不是正确的。为了避免它,我想计算总和从按钮到顶部,以便至少最新的记录将具有正确的值。在我的情况下,对每个用户来说都是可行的,我总是为当前保存当前更新的total_sum ...所以我有一个开始的值。
在这种情况下(+
将考虑为-
和-
为+
)我得到的是:
id qty total_sum
1 100 0 /100 - 100
2 200 100/300 - 200
3 -50 300 /250 + 50
4 20 250 /init_value - 20
的问题是,每行中total_sum
行动之前提出的总和该行已完成。例如在第2行中,它显示了total_sum=100
,这是在处理第2行的动作之前。
我怎样才能解决这个问题,以显示第一列total_sum但BUTTOM计算?
basicly我需要的是:
id qty total_sum
1 100 100
2 200 300
3 -50 250
4 20 init_value (which is 270)
这是我的代码:
SELECT id,qty,(select init_value from x where .....)
- Sum(a.qty)OVER(ORDER BY id DESC) as total_sum
FROM a
ORDER BY id ASC
我怎样才能解决呢? (PostgreSQL的9.3)