【发布时间】:2019-04-09 03:53:14
【问题描述】:
我有一项棘手的小工作要做,其中涉及计算某些日期范围之间的重叠。我在 VBA/Excel 中编写了一些代码,效果很好,但是速度慢得惊人——而且我认为这种东西属于 Access(或类似的)而不是 Excel。
对需要做什么的非常简短的总结......
有一个看起来像这样的主表(可能是数百万行):
Main_Table
- Account_Number_Index
- 开始日期
- 结束日期
- Data_Item_1
- Data_Item_2 ... ... ...
- Data_Item_N
我还有一个“分析周期”的小表格(通常只有 4-6 行)
Analysis_Periods
- Period_Index
- Period_Start_Date
- Period_End_Date
- Period_Label
我需要根据所有这些创建一个输出表,其中每个 Account_Number_Index 和 Period_Index 组合都有一条记录。字段将是:
输出表
- Account_Number_Index
- Overlap_Start_Date(如下所述)
- Overlap_End_Date(解释如下)
- Period_Index
- Period_Lable
- Data_Item_1
- Data_Item_2 ... ... ...
- Data_Item_N
所以在松散的伪代码中它看起来像这样:
For each row in Main_Table
For each row in Analysis_Periods
Work out the overlapping period (Overlap_Start_Date...Overlap_End_Date) for time intervals (Start_Date...End_Date) and (Period_Start_Date...Period_End_Date)
If there is no overlap at all
Do nothing
Else
Output a row of data to Output_Table which is identical to the row in the Main_Table except that:
* Overlap_Start_Date used instead of Start_Date
* Overlap_End_Date used instead of End_Date
* Period_Index and Period_Label tagged also output
End If
Next row in Analysis_Periods
Next row in Main_Table
计算重叠期只是以下时间间隔的一个例子: (a) max(Start_Date, Period_Start_Date) (b) min(End_Date, Period_End_Date)
我想我已经设法在下面包含一个超链接,以便在一张纸上写下一点 re:重叠时间间隔,如果这有助于可视化问题。
谁能建议一种在 Access 中执行此操作的有效方法,使用一些 SQL 代码或一些 VBA(或两者)?
我不是这方面的专家,所以我希望我是有道理的......如果不是,请道歉。
非常感谢您的帮助。
谢谢 一个
【问题讨论】:
-
分析和周期索引对可以有多个重叠的日期范围吗?