我开始学习MYSQL并且手头有一个我无法弄清楚的问题。我的表看起来像这样:
OU Date Amt
A20 201701 1000
A20 201705 1000
A20 201708 1000
B10 201702 1000
B10 201705 1000
我想要的是按OU计算每行的YTD金额,如下所示:
OU Date Amt YTD
A20 201701 1000 1000
A20 201705 1000 2000
A20 201708 1000 3000
B10 201702 1000 1000
B10 201705 1000 2000
我尝试了不同的sum和sumif函数但无法得到正确的结果。有人可以帮忙吗?任何意见都非常感谢!
答案 0 :(得分:0)
一种方法使用相关子查询:
SELECT
OU,
Date,
Amt,
(SELECT SUM(t2.Amt) FROM yourTable t2
WHERE t1.OU = t2.OU AND t2.Date <= t1.Date) AS YTD
FROM
yourTable t1
ORDER BY
OU, Date;
子查询使用的技巧是,对于与当前记录共享相同OU
值的那些记录,对表中的每条记录求和当前或早期日期的数量。您可以浏览下面的演示以便更好地理解。
在这里演示: