【发布时间】:2015-04-17 10:15:25
【问题描述】:
我有一个包含多个条目的表。一项由开始日期时间和结束日期时间组成。
我想以这样的方式查找条目集群:
如果一个条目在前一个条目结束之前开始,则两者都是集群的一部分。 这是某种重叠问题。
例子:
id start end
1 2007-04-11 15:34:02 2007-05-11 13:09:01
2 2007-06-13 15:42:39 2009-07-21 11:30:00
3 2007-11-26 14:30:02 2007-12-11 14:09:07
4 2008-02-14 08:52:11 2010-02-23 16:00:00
我想要输出
id start end
1 2007-04-11 15:34:02 2007-05-11 13:09:01
2-4 2007-06-13 15:42:39 2010-02-23 16:00:00
我有一个解决方案,它先排序,然后使用行号和滞后/领先等进行一些计算。 问题是第 4 行直接在第 2 行之后的特殊情况,所以我不认识它......
这里的sql有没有好的解决方案?也许我错过了什么?
【问题讨论】:
-
这个问题之前在 Stack Overflow 上已经解决了。
标签: sql sql-server group-by lead