MS Access - 如何对同一 table 中两列的匹配条件求和

MS Access - How to sum matching criteria from two columns in same table

我在数据库管理员中发布了这个,但那里没有引起太多关注,所以我在这里尝试。

我有一个 MS Access 数据库,其中包含我正在尝试使用的四个感兴趣的列。

这些行代表售出的职位,感兴趣的列是“OriginalSaleAmount”、“OriginalSaleDate”、“RevisionSaleAmount”和“RevisionSaleDate”。您可以看到 date 和 sale 列之间存在关系,但当然 Access 本身并不知道这一点。

我想要一份报告或某种视图,它在一年中的每个月都有一行,并显示与该月相关的“OriginalSalesAmount”和“RevisionSaleAmount”的总和一年中的一个月。当然,年份本身也应该加以区分。我们不希望将 2021 年 1 月和 2022 年 1 月的数据加在一起;每个都应该是自己的年份。

这里有一个例子可以帮助说明:

假设我有这个 table。

|JobNo  | OrigSaleAmnt | OrigSaleDt | RevSaleAmnt | RevSaleDt  |
|-----: | ------------:|:----------:| -----------:|:----------:|
| 12345 |       765 | 01/05/2022 |        6 | 01/29/2022 |
| 12346 |       345 | 01/24/2022 |       28 | 02/27/2022 |
| 12347 |       579 | 02/07/2022 |        3 | 03/12/2022 |
| 12348 |       358 | 03/16/2022 |        9 | 03/19/2022 |
| 12349 |       935 | 03/29/2022 |       21 | 04/25/2022 |

我需要一个 table、查询或报告来从 table 生成此信息。

| DateYear| DateMonth | TotalSales | Comment                       |
| -------:|:---------:| ----------:|:----------------------------- |
|    2022 |   January |    1616 | 765 + 345 + 6        |
|    2022 |  February |     607 | 579 + 28                |
|    2022 |     March |     965 | 358 + 935 + 3 + 9 |
|    2022 |     April |      21 | 21                         |

您会注意到,每个月都会对与特定销售列相关联的日期对应的销售额求和。

我确实知道更正确的方法可能是有一个复选框字段来指定给定记录是否为修订版;这样,日期和金额就会全部在同一列中,并且可以很容易地相加。但我正在将其从我们一个部门的电子表格转换为 Access,此时需要它尽可能匹配原始电子表格布局。

我不是一个强大的 Access 用户,我不完全确定从哪里开始这种数据处理。如果有人可以帮助指导我如何完成这类事情,我将不胜感激。

有时,您需要 SQL。 :)

在查询设计器中,您应该会在左上角标记为“视图”的附近看到一个下拉按钮。单击它并选择 SQL。这会给你一个 SQL 查询 window。用这个替换里面的任何东西:

SELECT DateYear, MonthName(DateMonthNum) as DateMonth, SUM(Amnt) AS TotalSales FROM
(
SELECT Year(OrigSaleDate) AS DateYear, Month(OrigSaleDate) AS DateMonthNum, OrigSaleAmnt as Amnt
FROM Sales
UNION ALL
SELECT Year(RevSaleDate) AS DateYear, Month(RevSaleDate) AS DateMonthNum, RevSaleAmnt as Amnt
FROM Sales
)
GROUP BY DateYear, DateMonthNum
ORDER BY DateYear, DateMonthNum

这假设您的 table 名为 Sales。如果不是,请将“FROM Sales”替换为“FROM [your table name]”。

内部查询选择原始销售信息,然后附加修改后的销售信息(UNION ALL)。外部查询从内部查询的结果中选择并聚合。

我附上了演示它的图片。请注意在设计视图中隐藏了两列。即修改金额与原金额之和