【发布时间】:2013-12-05 14:05:39
【问题描述】:
我想填写需要开始和结束日期信息的日历对象。我有一列包含一系列日期。有些日期是连续的(相差一天),有些则不是。
InfoDate
2013-12-04 consecutive date [StartDate]
2013-12-05 consecutive date
2013-12-06 consecutive date [EndDate]
2013-12-09 [startDate]
2013-12-10 [EndDate]
2014-01-01 [startDate]
2014-01-02
2014-01-03 [EndDate]
2014-01-06 [startDate]
2014-01-07 [EndDate]
2014-01-29 [startDate]
2014-01-30
2014-01-31 [EndDate]
2014-02-03 [startDate]
2014-02-04 [EndDate]
我想选择每个连续日期范围的开始和结束日期(块中的第一个和最后一个)。
StartDate EndDate
2013-12-04 2013-12-06
2013-12-09 2013-12-10
2014-01-01 2014-01-03
2014-01-06 2014-01-07
2014-01-29 2014-01-31
2014-02-03 2014-02-04
我想只使用 SQL 来解决问题。
【问题讨论】:
-
第二个清单中的空行是什么意思?你真的需要在 SQL 中解决这个问题吗?这似乎很难用 SQL 来表达(至少在标准的 SQL 中),显而易见的算法几乎是连续的,并且可以很容易地用过程语言编写。如果真的需要 SQL,我会使用存储过程。
标签: sql sql-server sql-server-2008 gaps-and-islands