SQL如何实现:同列数据逐行相加?

该列第一行数据放在后面列第一行,第一行和第二行的和放后面列第二行,前三列的和放后面列的第三行,以此类推
例如:
A列 B列
11.25 11.25
25.25 36.5
50 86.5
60 146.5
要实现B列的数据

给一个DB2的
SELECT t2.A, SUM(t1.A)
FROM (SELECT a, ROW_NUMBER() OVER(ORDER BY A) RK from tab) t1, (SELECT a, ROW_NUMBER() OVER(ORDER BY A) RK from tab) t2
WHERE t1.rk <= t2.rk
group by t2.a
ORDER BY T2.A

-------------------------
....+....1....+....2....+....3....+....4....+....5
A SUM ( T1 . A )
11.25 11.25
25.25 36.50
50.00 86.50
60.00 146.50

ORACLE最好办
SELECT t2.A, SUM(t1.A)
FROM (SELECT a, rownum RK from tab) t1
(SELECT a, rownum RK from tab) t2
WHERE t1.rk <= t2.rk
group by t2.a
ORDER BY T2.A

关键是求得行号

如果你所有的数据都是唯一的,并且是递增排列了,那也有另外一个办法的
SELECT t2.a, sum(t1.a)
FROM TAB t1, tab t2
WHERE t1.a <= t2.a
group by t2.a
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-08
declare @i1 float
declare @i2 float
set @i1=0
set @i2=0
update table1 set @i1=@i2,@i2=[A]+@i1,[B]=@i2
相似回答