按日期访问累计总数

时间:2019-07-15 14:47:46

标签: sql ms-access

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

因此,如果一个项目于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]);

我可以通过在不同的日期上反复运行简单的查询来做到这一点,但理想情况下,我会在在线日期列中获得一张表,其中包含所有年份,以及该年中所有可用项目容量的累积总计< / p>

1 个答案:

答案 0 :(得分:1)

您可以使用相关子查询来做到这一点:

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]);