首页 > 解决方案 > 按日期访问累计总数

问题描述

我需要在在线日期之前显示我们所有能源项目的累积功率。

所以,如果一个项目在 2016 年上线,那么它也在 2017 年和 2018 年上线,应该计入这些总数。我基本上需要一张可以回答问题的表格

      "What was our energy capacity as of 12/31/2016, 12/31/2017,etc"

我可以通过使用不同日期一遍又一遍地运行一个简单的查询来做到这一点,但理想情况下,我只运行一个查询并获得我需要的表。

我实际上并不知道如何用 SQL 编写代码,所以我只使用 Access 查询设计器,这可能会使事情变得更加困难。

得到我想要的简单查询:

SELECT Sum(Projects.[System Size AC]) AS [SumOfSystem Size AC]
FROM Projects
WHERE (((Projects.[Online Date])<#1/1/2018#));

出现错误的查询:

SELECT DSum([Projects]![System Size AC],[Projects],Year([Online Date])<=[Yr]) AS [Run Sum], Year([Online Date]) AS Yr
FROM Projects
GROUP BY Year([Online Date]);

我可以通过使用不同日期一遍又一遍地运行简单查询来做到这一点,但理想情况下,我会在在线日期列中获得一个包含所有年份的表,其中包含该年所有可用项目容量的累积总数

标签: sqlms-access

解决方案


您可以使用相关子查询来执行此操作:

SELECT Year(p.[Online Date]) as yr,
       SUM(p.[System Size AC]) as this_year,
       (SELECT SUM(p2.[System Size AC])
        FROM Projects as p2
        WHERE YEAR(p2.[Online Date]) <= YEAR(p.[Online Date])
       ) as running_sum
FROM Projects as p
GROUP BY Year([Online Date]);

推荐阅读