我在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分钟),将每个间隔分解为一组行。在需要的时间间隔内统计不同的行数 – Serg