访问报告子组汇总

Access Report Subgroup summing

在 MS Access 2010 中,假设查询包含以下结果:

Date     Activity     Hours
1.9.     Reading      1
1.9.     Writing      2
2.9.     Reading      1
3.9.     Talking      1
4.9.     Reading      3

1.10.    Talking      2
1.10.    Writing      1
2.10.    Reading      2
3.10.    Talking      2
4.10.    Reading      1

报告应显示按 activity 分组的每个月花费的总小时数,类似于

Month           Activity            Hours
September       Reading             5
                Writing             2
                Talking             1

October         Reading             3
                Writing             1
                Talking             4

使用向导我设法得到了一份看起来像

的报告
Month           Activity            Hours
September       Reading             1
                Reading             1
                Reading             3
                Writing             2
                Talking             1

October         Reading             2
                Reading             1
                Writing             1
                Talking             2
                Talking             2

这几乎是我想要的,但是.. ?

我试过 =sum(Hours),但是所有 Hours 字段都只包含所有小时的总和,我仍然得到几行相同的 activity。

其实这个报告比较复杂。在报告之前的表格中,用户可以输入一个日期范围(例如 9 月 1 日 - 10 月 30 日)。报告应在整个时间范围内求和,而不是按月细分,即:

Date range      Activity            Hours
9/1 - 10/30     Reading             8
                Writing             3
                Talking             5

创建一个带有 SQL 的查询,如下所示:

SELECT MonthName(Month([Date])), Activity, SUM(Hours)
FROM yourTable
WHERE [Date] >= xxx AND [Date] <= yyy
GROUP BY MonthName(Month([Date])), Activity

关键元素是 GROUP BY 子句,它将每个月的小时数 + Activity。

相加

然后根据该查询生成报告。

顺便说一句,调用列 "Date" 不是一个好主意,它是 Access 中的保留字。