我有一组具有开始和结束值的“事件”数据。数据可能会重叠或被端对端对接(最终值或一条记录匹配另一个的起始值)。我想找到一个很好的解决方案来查找事件的“岛屿”,即查找发生事件的跨度。下面的输入和预期输出表应该有助于可视化。使用SQL查找连续的事件数据段(间隙和岛屿)
要添加额外的复杂性,我们可能要考虑的公差(即一个事件在1.15结束和另一个开始在1.2可能被视为一个连续的事件。
我试图通过识别所有的来解决这个问题开始事件(那些事件没有从x事件结束开始,然后是结束事件,然后根据开始事件的起始值加上其下一个结束事件值来构建跨度)
这不起作用,因为生产数据太“真实”,并且总是存在处理不合适的附带案例。*
我目前的想法是,实际计算“差距”可能是理想的,然后反转这些差距以找到连续的事件跨度。
*请注意,实际生产数据非常大且非常复杂。有数百个很多事件由很小的碎片组成。
你的SQL Server 2012或更高版本上? 2012年的窗口功能有很多改进可以帮助你。 – 2015-03-03 10:24:13
我很抱歉地说,这仍然是在2005年运行。 – 2015-03-03 10:44:29