Sql 选择没有重叠时间的每个项目
所以,如果我选择非重叠对象,结果应该是:Sql 选择没有重叠时间的每个项目,sql,overlap,Sql,Overlap,所以,如果我选择非重叠对象,结果应该是: Item | StartTime | EndTime 1 | 2015-08-15 03:00:00 | 2015-08-17 12:00:00 1 | 2015-08-15 07:00:00 | 2015-08-17 18:00:00 1 | 2015-08-18 03:00:00 | 2015-08-20 12:00:00 2 | 2015-
Item | StartTime | EndTime
1 | 2015-08-15 03:00:00 | 2015-08-17 12:00:00
1 | 2015-08-15 07:00:00 | 2015-08-17 18:00:00
1 | 2015-08-18 03:00:00 | 2015-08-20 12:00:00
2 | 2015-08-15 03:00:00 | 2015-08-17 12:00:00
2 | 2015-08-15 07:00:00 | 2015-08-17 18:00:00
2 | 2015-08-19 04:00:00 | 2015-08-20 12:00:00
说明
- 首先尝试找到两个范围重叠
T1的匹配。开始时间8-18到8-20与8-19到8-20重叠。我搞糊涂了。@James一个是
另一个是item1
请在RDBMS中加上一个标签。您不可编辑。Tksitem2
1 | 2015-08-18 03:00:00 | 2015-08-20 12:00:00 2 | 2015-08-19 04:00:00 | 2015-08-20 12:00:00
SELECT T1.* FROM YourTable T1 LEFT JOIN YourTable T2 ON (T1.StartTime <= T2.EndTime) and (T1.EndTime >= T2.StartTime) and T1.item = T2.item and T1.StartTime <> T2.StartTime and T1.EndTime <> T2.EndTime WHERE T2.item IS NULL
| Item | StartTime | EndTime | |------|--------------------------|--------------------------| | 1 | August, 18 2015 03:00:00 | August, 20 2015 12:00:00 | | 2 | August, 19 2015 04:00:00 | August, 20 2015 12:00:00 |