2011-12-22 151 views
0

样品表ID:(num是一个关键所以不会有任何重复)创建累积和列

num 
1 
5 
6 
8 
2 
3 

我需要一个查询,使这个: 所需的输出: (应进行排序,并具有累积和列)

num cumulative 
1 1 
2 3 
3 6 
5 11 
6 17 
8 25 

Mysql的我有

Select num as n, 
     (select sum(num) from ID where num <= n) 
from ID order by n; 

我拿起这个例子在这个link但MySqlServer

+0

第一列是唯一的吗? – 2011-12-22 14:12:17

+0

不,这一栏是简单的值栏@OlegDok – soamazing 2011-12-22 14:13:52

+1

那么如果没有正确识别,那么就没有确切的决定 – 2011-12-22 14:15:49

回答

2

试试这个:

SELECT num,(SELECT SUM(num) FROM tab WHERE num<=t.num) AS CumulativeSum 
FROM tab t 
0

由于num是不是唯一的,你可能需要使用ROW_NUMBER在那里得到一个唯一的编号,然后做总和:

declare @t as table (num int) 

insert into @t (num) values (1) 
insert into @t (num) values (5) 
insert into @t (num) values (6) 
insert into @t (num) values (7) 
insert into @t (num) values (2) 
insert into @t (num) values (3) 

;with rows as (
    select 
     num, 
     ROW_NUMBER() over (order by num) as Row 
    from @t 
) 
select num, (select sum(num) from rows where row <= r.row) 
from rows r