【发布时间】:2017-08-28 22:34:25
【问题描述】:
我在 SQL Server 2012 数据库中有一个记录事件的表,其中包含 StartDate 和 EndDate 列。我需要汇总特定时间段内的所有记录,并确定任何事件处于活动状态的持续时间,不计算重叠持续时间。例如,如果我的表格如下所示:
id StartDate EndDate
=======================================================
1 2017-08-28 12:00:00 PM 2017-08-28 12:01:00 PM
2 2017-08-28 1:15:00 PM 2017-08-28 1:17:00 PM
3 2017-08-28 1:16:00 PM 2017-08-28 1:20:00 PM
4 2017-08-28 1:30:00 PM 2017-08-28 1:35:00 PM
而我的搜索时间段是从2017-08-28 12:00:00 PM 到2017-08-28 2:00:00 PM,那么我想要的输出应该是:
Duration of Events Active = 00:11:00
我已经能够汇总记录并获得总持续时间(基本上只是EndDate - StartDate),但我无法弄清楚如何排除重叠时间。任何帮助,将不胜感激。谢谢!
【问题讨论】:
-
您能否添加一个包含重叠的示例以了解边界情况?
-
根据您需要的粒度将每个间隔分解为一组行(例如 1 分钟)。在所需的间隔内计算不同的行
标签: sql sql-server sql-server-2012