2015-02-08 55 views
1

我正在使用MySQL,並且需要顯示每行的所有以前的值(包括當前行)的總和。在每行之後顯示總和

date | val | total 
------------------ 
15M | 20 | 20 
17M | 15 | 35 
1APR | -5 | 30 
------------------- 

所以,在數據庫中我只有dateval每個日期。我目前使用SELECT date, val FROM table ORDER BY DATE ASC。我怎樣才能添加total列?我想我會使用一個SUM查詢,但是如何爲每一行添加總和?

+0

也許'選擇日期,val,qty,@s:= @ s + total作爲mytable的小計 – skobaljic 2015-02-08 13:13:20

+0

SELECT * FROM my_table; – Strawberry 2015-02-08 13:26:45

回答

3

如果你可以使用一個變量,你可以很容易地計算累計總和 這樣

set @csum := 0; 
select date, val, (@csum := @csum + val) as cumulative_sum 
from table 
order by date DESC; 

編輯有一種方式來定義你的變量在加入

select t.date, t.val, (@csum := @csum + t.val) as cumulative_sum 
from table t 
join (select @csum := 0) r 
order by date DESC; 
+0

'如果你可以使用變量'。爲什麼我不能使用變量? – Cristy 2015-02-08 13:15:04

+0

我不確定。這取決於您使用的庫或SQL客戶端。 – bpgergo 2015-02-08 13:24:05

+0

它的工作原理。我唯一的問題是總數是按'date','ascending'計算的,但我必須按降序顯示結果(最新的條目第一個)。我可以按升序完成總和,然後按降序對結果進行排序嗎? – Cristy 2015-02-08 13:29:02