Reputation: 63
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
so, if i select non overlap objects, result should be:
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
Upvotes: 0
Views: 51
Reputation: 48197
Explain
T1.StartTime <= T2.EndTime ...
T1.item = T2.item
T1.StartTime <> T2.StartTime and T1.EndTime <> T2.EndTime
T2.item IS NULL
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
OUTPUT
| 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 |
Upvotes: 2