我需要在我的Access查询中添加“Running Total”列。这样做的目的是确定在特定时间有多少个开放位置。在Access查询中运行总计
有一个名为“开放日期”的字段,我希望按升序排列。
在某些情况下,多个位置打开的同一天,如下图所示:
╔══════════╦═══════════╦═══════════════╦
║ 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,但这些都没有给出我想要的结果。
UPDATE:
这是我目前使用的代码:
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个商店,等等。
常见问题。查看https://support.microsoft.com/zh-CN/help/290136/how-to-create-a-running-totals-query-in-microsoft-access。搜索论坛,可能会找到例子。这里是一个https://stackoverflow.com/questions/44443253/loop-through-records-and-increment-value-in-vba-access/44444821#44444821 – June7
搜索'[ms-access]运行total'返回甚至更多的结果,甚至几个题目几乎完全像你的问题:[在访问中运行总查询](https://stackoverflow.com/questions/38936340/running-total-query-in-access) –
Typo再次罢工!请参阅关于我的答案的评论以了解更新的解决方案。 – SandPiper