我有一個帳戶交易表,其中列出了帳戶中的所有活動。如何根據其他行計算總和
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)