2013-11-15 202 views
0

我在我的表中的数据如下,递归函数

+----+-----+ 
| ID | Qty | 
+----+-----+ 
| 1 | 100 | 
| 2 | 200 | 
| 3 | 150 | 
| 4 | 50 | 
+----+-----+

我需要的结果如下,

+----+-----+-------+ 
| ID | Qty | C.Qty | 
+----+-----+-------+ 
| 1 | 100 | 100 | 
| 2 | 200 | 300 | 
| 3 | 150 | 450 | 
| 4 | 50 | 500 | 
+----+-----+-------+

第三列的结果将是以前行的总和, 请任何一个帮助....

+0

我不明白...哪里了'500'从何而来? –

+0

@PaulDraper 450 + 50 = 500 .. –

+0

它已经被回答[here](http://stackoverflow.com/questions/2120544/how-to-get-cumulative-sum) – remigio

回答

2

我只想用一个子查询:

SELECT ID, Qty, 
    (SELECT SUM(Qty) FROM [My Table] b WHERE b.ID <= [My Table].ID) AS [Total Qty] 
FROM [My Table] 
+0

感谢它的工作 – user2249248

2

请尝试:

SELECT S1.ID, S1.Qty ,sum(S2.Qty) CUM_SUM 
FROM YourTable S1 join YourTable S2 
on S1.ID>=S2.ID 
group by S1.ID, S1.Qty 
ORDER BY S1.ID 
1
SELECT ID, Qty, 
SUM(Qty) OVER(ORDER BY ID 
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) 
     AS C.QTY 
FROM Table 
+0

看起来很有趣。这是什么数据库服务器? – David

+0

这是ANSI-SQL –

+0

@David Sql Server 2012(以前不支持)。不知道甲骨文何时开始支持它。至少工作11g。如果它能够运行postgresql,不会感到惊讶。绝对不会在MySQL中工作 –

0

试试这个:

select a.id,a.qty,sum(b.qty) as total_qty 
from table a cross join table b 
where b.id <= a.id 
group by a.id,a.qty 
order by a.id 

demo