将值汇总到一列并添加到另一个表中

时间:2014-04-07 07:24:02

标签: sum

我的表(BOB)看起来像这样:

Year       Month    Value
2010         1        100
2010         2        100
2010         3        100
2010         4        100
2010         5        100

我想将YTD值添加到另一个表(BOB2)

更确切地说,我希望看到BOB 2表格像

Year       Month    Value
2010         1        100
2010         2        200
2010         3        300
2010         4        400
2010         5        500

2 个答案:

答案 0 :(得分:0)

好吧,我想我明白你要做什么..但如果没有,请重新说出你的问题...你可以通过使用以下SQL来完成你所要求的。

--INSERT INTO BOB2 (Year, ID, Value)
SELECT a.Year, a.ID, (SELECT SUM(b.Value)
               FROM   BOB b
               WHERE  b.ID <= a.ID) as RunningTotalValue
FROM   BOB a
ORDER  BY a.Value;

以下是SQLFiddle供您查看。

编辑:将ID列更改为&#34;月&#34;看到你的帖子编辑后。

答案 1 :(得分:0)

见下面的答案。我简化了查询。

select 
   concat(cast(t1.year as char), cast(t1.month as char)) period_current,            
   sum(t1.amount) amount
from bob t1

   left join bob t2 on
     (t2.year + t2.month) <= (t1.year + t1.month)
group by
  (t1.year + t1.month);

查询正在做的是使用t1作为基表并加入期间(年+月),然后您想要在此之前加上包括当前金额的金额。我没有在所有边缘情况下添加,但这给你一些东西开始。如果您将查询限制为一年,这应该足够了。