[英]Structure of a relational database for comparing multiple dates
我们有一个Microsoft Access数据库在工作,以跟踪客户的持续列表。 每个客户必须与多个部门(总共13个(!)部门)签订合同,在发送和接收合同时,我们要为此跟踪每个客户的当前进度。 该结构类似于以下内容:
Table 1
-------------------------------------------------------------------------------------------------------------------
CUSTOMER_ID | ... | DEP_A_SENT | DEP_A_RECEIVED | DEP_B_SENT | DEP_B_RECEIVED | DEP_C_SENT | DEP_C_RECEIVED | ... |
-------------------------------------------------------------------------------------------------------------------
1 | ... | 2015-05-01 | 2015-05-03 | 2015-05-04 | 2015-05-09 | 2015-05-01 | 2015-05-05 | ... |
2 | ... | 2015-05-01 | 2015-05-05 | 2015-05-01 | 2015-05-03 | 2015-05-13 | --- | ... |
...
DEP_X_SENT
与DEP_X_RECEIVED
之间的时间间隔(例如,客户ID 1的“部门A:2天,部门B:5天...”) DEP_X_RECEIVED
日期彼此进行比较:确定收到合同的第一个( MIN
)和最后一个( MAX
)日期,以查找每个客户直到所有合同到期需要多少天。接收。 (例如,客户ID 1的“合同在6天内收到”,因为第一份是在5月3日收到的,最后一份是在5月9日收到的)。 此外,我想计算所有客户的平均时间。 如果尚未收到合同,则该字段中没有值。 在MySQL中,我可以使用GREATEST
和LEAST
功能来比较不同列之间的值,但是在Access中,我现在必须依靠VBA,我认为这是一种不好的做法。 如何通过相当简单的MAX
, MIN
和AVG
操作规范化和重组表以归档目标? 非常感谢!
只需将现有表折叠为以下结构:
create table TABLE_1 (
CUSTOMER_ID int,
DEPARTMENT_ID int, -- foreign key reference to DEPARTMENT table
SENT date,
RECEIVED date
);
现在,您可以简单地执行所需的分析,并将原始布局作为数据透视表报表或LEFT OUTER JOIN从DEPARTMENT表检索到新的TABLE_1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.