比较日期范围内的多行数据以在MS Access中创建新表

时间:2016-11-26 21:31:27

标签: sql ms-access

我是SQL&的新手MS-Access,但我在MS-Access中有一个数据表,如下所示:

ID | Start_Time | End_Time 
1  | 1:00:00 PM | 1:00:30 PM
2  | 2:15:10 PM | 2:15:50 PM
3  | 2:15:30 PM | 2:18:40 PM
4  | 2:17:00 PM | 2:17:30 PM
5  | 2:45:10 PM | 3:03:10 PM

每行按顺序记录到数据库中。我想比较每个的开始和结束时间,并将重叠的行组合在一起。例如,ID 1的Start_TimeEnd_Time在表格中不会重叠任何其他时间,因此,它会被发布到新表格中。但是,ID 2到4的Start_TimeEnd_Time与ID 2的重叠Start_TimeStart_Time,并且ID为3 {1}} End_Time作为组ID 2到4的End_Time

最终结果将是一个新的表格,如下所示:

ID | Start_Time | End_Time   | Duration_seconds
1  | 1:00:00 PM | 1:00:30 PM | 30
2  | 2:15:10 PM | 2:18:40 PM | 210
3  | 2:45:10 PM | 3:03:10 PM | 1080

如何在SQL / MS-Access中执行此操作?

谢谢!

1 个答案:

答案 0 :(得分:0)

这可能需要通过记录集几次。

定义2个新变量。 NewStart和NewEnd。当您获取每个ID时,请指定现有的开始/结束时间 使用嵌套循环将每个记录与每个其他记录(新时间)进行比较。如果开始时间在时间​​范围之间,则将ID NewStart替换为其他ID开始时间。 NewEnd将被分配更大的当前ID或比较ID结束时间。

当您循环时,第3项和第4项将具有相同的" new"时间为ID 2.所有人都会改变" new"倍。

在此之后,您将查询每个ID的不同时间