假设您在数据库中有一个表,该表每天跟踪 9 个办公地点的票务出现 4 到 5 次。在每个时间段中,人们可能会出现一张票(我想我们可以使用交易模型),或者他们可以出现很多票(我见过一些有 15 个,听说其他人有多达 50 个)。
使用 Access 2013 创建了一个查询来捕获该表中的数据。这是为了存档(当前日期表记录在 24 小时后清除)和一般分析。
当前查询逻辑如下:
SELECT Format([T1]![APP_DTE],"Short Date") AS APPEAR_DTE,
T1.OFFICE, OFFCDES.OFFICE_NAME, OFFCDES.LOC_CDE, OFFCDES.LOC_NAME,
T1.APP_TIME_PER, T1.ROOM_NUM, T1.INCL_CDE, T1.ID_NUMB,
T1.ADJ_APPEAR_NUM, T2.APPEAR_CDE,
IIf([T1]![APPEAR_LOGIN_TIME] Is Null,"",[T1]![APPEAR_LOGIN_TIME]) AS LOGIN_TIME1,
IIf([T1]![OFFICE_LOGIN] Is Null,"",[T1]![OFFICE_LOGIN]) AS OFFICE_LOGIN,
IIf([T1]![DECISION_TIME] Is Null,"",[T1]![DECISION_TIME]) AS DECISION_TIME,
[T1]![ID_NUMB] & "-" & CStr([T2]![OFFICE_REP_ID]) & "-" & CStr([T1]![APP_DTE]) AS CASEKEY,
Weekday([APP_DTE]) AS NUM_DAY,
[T1]![OFFICE] & "-" & Weekday([T1]![APP_DTE]) & "-" & [T1]![APP_TIME_PER] AS OFFICE_TP_KEY, "" AS RecordKey
FROM (T1 INNER JOIN OFFCDES ON T1.OFFICE = OFFCDES.OFFICE)
INNER JOIN T2 ON T1.APPEAR_NUM = T2.APPEAR_NUM
WHERE (((Format([T1]![APP_DTE],"Short Date"))=Format(Date(),"Short Date")));
我意识到上面的代码需要清理以提高可读性,而且它可能没有它应该有的效率。那部分我不能归功于我,我从一位同事那里继承了所有这些,并且刚刚开始思考它。
查询结果包含大量信息,其中一些(大部分)与我要完成的任务无关。捕获所有这些信息很重要,因为信息一旦消失就消失了。声明:
我正在尝试做的事情:
我正在尝试合并一个键/按顺序编号的列,该列将告诉我在提取日期的特定办公室/时间段内特定 ID_NUMB 发生了多少次。我也不是在寻找总数,而是在此处寻找 SEQ 列的内容:
ID_NUMB | APPEAR_NUM | OFFICE | TP | DATE | SEQ
1 | 1XZ2 | 01 | 01 | 9/7/2016 | 1
1 | 1XZ3 | 01 | 01 | 9/7/2016 | 2
2 | 3MN1 | 03 | 01 | 9/7/2016 | 1
3 | J915 | 02 | 01 | 9/7/2016 | 1
1 | 1TY1 | 01 | 01 | 9/7/2016 | 1
3 | P91D | 05 | 01 | 9/7/2016 | 1
2 | U11E | 11 | 05 | 9/7/2016 | 1
虽然我环顾四周,发现了许多精细的编号解决方案,但由于计数似乎有多精细,大多数都不是我想要完成的。
我曾考虑将数据写入临时表,但使用我发现的一些信息并没有找到任何解决方案。同样,我尝试编写一个单独的查询,该查询可以检索此信息并添加序列号,这是对 MS Answers 站点上的解决方案的一种改编。我把它放在一边,因为这似乎是错误的方法。
我什至玩弄了将查询写入临时表,然后让一段 VBA 处理顺序编号,但这种方法也没有走得太远。
正如我概述的那样,在列中生成序列号的正确方法是什么?我不知所措。