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