MYSQL计算YTD

时间:2017-10-27 04:51:53

标签: mysql

我开始学习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函数但无法得到正确的结果。有人可以帮忙吗?任何意见都非常感谢!

1 个答案:

答案 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值的那些记录,对表中的每条记录求和当前或早期日期的数量。您可以浏览下面的演示以便更好地理解。

在这里演示:

Rextester