aka*_*ter 5 sql t-sql sql-server sql-server-2012
有没有办法根据用户撤回所有具有重叠日期时间的记录?
例如;
TableA具有以下行;
TrainerID StartTime EndTime
1234 10-1-2015 08:30 10-1-2015 09:00
1234 10-1-2015 08:45 10-1-2015 09:15
1234 10-1-2015 09:30 10-1-2015 10:00
2345 10-1-2015 08:45 10-1-2015 09:15
2345 10-1-2015 09:30 10-1-2015 10:00
Run Code Online (Sandbox Code Playgroud)
我需要一个只能提取以下记录的查询,因为它的开始时间是在培训师的上一个结束时间之前(双重预订):
1234 10-1-2015 08:45 10-1-2015 09:15
Run Code Online (Sandbox Code Playgroud)
小智 2
下面的 EXIST 代码应该可以给你答案。该代码确保冲突条目的开始时间在主列表条目的开始时间之前,而冲突的开始时间仍然在邮件列表条目的开始时间之后。
SELECT *
FROM tblTest clashing
WHERE EXISTS
(
SELECT 1
FROM tblTest mainlist
WHERE clashing.trainderid = mainlist.trainderid
AND clashing.starttime < mainlist.endtime
AND clashing.starttime > mainlist.starttime
)
Run Code Online (Sandbox Code Playgroud)
也可以用 IN 语句来写,但是 EXIST 效率更高
| 归档时间: |
|
| 查看次数: |
705 次 |
| 最近记录: |