【发布时间】:2017-06-13 23:19:56
【问题描述】:
我需要在我的访问查询中添加一个“运行总计”列。这样做的目的是确定在给定时间有多少开放地点。
有一个名为“开放日期”的字段,我想按升序计算。
在某些情况下,多个地点在同一天营业,如下所示:
╔══════════╦═══════════╦═══════════════╦
║ Location ║ Open Date ║ Running Total ║
╠══════════╬═══════════╬═══════════════╬
║ 1 ║ 1/1/1990 ║ 1 ║
║ 2 ║ 1/3/1990 ║ 2 ║
║ 5 ║ 1/3/1990 ║ 3 ║
║ 3 ║ 2/18/1991 ║ 4 ║
║ 6 ║ 3/17/1992 ║ 5 ║
║ 4 ║ 4/1/1995 ║ 6 ║
╚══════════╩═══════════╩═══════════════╩
所以在这种情况下,我可以说在 1995 年 4 月 1 日,有 6 个开放地点。
我尝试过使用 DSum 和 DCount,但它们都没有给出我想要的结果。
更新:
这是我目前使用的代码:
SELECT t1.[store sort], t1.[soft opening],
(SELECT COUNT(t2.[store sort]) FROM [storelist query] as t2
WHERE Format(t2.[soft opening], "yyyy-mm-dd") & "-" & t2.[store sort] <=
Format(t1.[soft opening], "yyyy-mm-dd") & "-" & t1.[soft opening]) AS Running_Total
FROM [storelist query] as t1
ORDER BY Format(t1.[soft opening], "yyyy-mm-dd") & "-" & t1.[store sort];
但是,这里是输出:
+------------+--------------+---------------+
| store sort | soft opening | Running_Total |
+------------+--------------+---------------+
| 1 | 8/1/1980 | 1 |
| 10 | 4/1/1985 | 2 |
| 2 | 10/1/1986 | 2 |
| 3 | 4/1/1987 | 4 |
| 4 | 10/1/1987 | 4 |
| 5 | 3/1/1988 | 5 |
+------------+--------------+---------------+
注意:这是使用数据。前面的示例只是我用于演示目的的示例数据。
如您所见,这并不是我们想要的效果。
在这种情况下,商店 2 的运行总数应为 3,因为它是第 3 家商店。商店 4 应该总共有 5 家商店。商店 5 应该有 6 家商店,等等。
【问题讨论】:
-
常见问题。查看support.microsoft.com/en-us/help/290136/…。搜索论坛,大概找到例子。这是一个stackoverflow.com/questions/44443253/…
-
搜索
[ms-access] running total会返回更多结果,甚至有几个问题的标题几乎与您的一模一样:Running total query in access -
错字又来了!请参阅对我的答案的评论以了解您的更新的解决方案。