【发布时间】:2015-09-02 07:20:39
【问题描述】:
我有以下列的表格:
[name_of_pos] varchar,
[date_from] datetime,
[date_to] datetime
以下是我的示例数据:
name_of_pos date_from date_to
----------------------------------------------------------------
Asystent 2015-08-26 08:57:49.000 2015-09-04 08:57:49.000
Biuro 2015-09-01 08:53:32.000 2015-09-01 08:53:32.000
Biuro 2015-09-02 09:00:41.000 2015-09-02 09:00:41.000
Biuro 2015-09-03 11:46:03.000 2015-09-03 11:46:03.000
Biuro 2015-09-10 09:02:11.000 2015-09-15 09:02:11.000
Koordynator 2015-09-01 09:04:06.000 2015-09-01 09:04:06.000
Projektant 2015-08-31 08:59:46.000 2015-09-01 08:59:46.000
Projektant 2015-09-02 08:00:54.000 2015-09-02 08:00:54.000
Projektant 2015-09-14 12:34:50.000 2015-09-14 12:34:50.000
我要返回的是每个name_of_pos 的日期范围(date_from 的最小值到 date_to 的最大值),但仅限于日期值连续的情况(时间部分不重要,可以忽略结果)。
期望的输出是:
name_of_pos date_from date_to
------------------------------------
Asystent 2015-08-26 2015-09-04
Biuro 2015-09-01 2015-09-03
Biuro 2015-09-10 2015-09-15
Koordynator 2015-09-01 2015-09-01
Projektant 2015-08-31 2015-09-02
Projektant 2015-09-14 2015-09-14
我尝试了使用类似于此问题的解决方案:
How do I group on continuous ranges
但运气不好,因为我有两个日期时间列。
【问题讨论】:
-
您确定您提供的源数据正确吗?如果是这样,你能解释一下你是如何得到
Biuro 2015-09-01 08:53:32.000 2015-09-03 11:46:03.000间隔的吗?此记录的源数据中似乎没有连续的时间间隔。 -
日期部分必须是连续的,时间部分不重要(可以忽略)所以 biuro 的三个记录(其中 date_from 是 2015-09-01,2015-09-02 和 2015-09- 03) 应作为 name_of_pos='Biuro' 的一行返回,其值为 date_from='2015-09-01' 和 date_to='2015-09-03'
标签: sql sql-server tsql gaps-and-islands