我有一个包含开始和结束日期时间的表,我需要确定是否有任何重叠并且不确定最佳方式.
最初我正在考虑使用如下所示的嵌套游标,这确实有效,但是我正在检查彼此相同的记录两次并且我确定它不是非常有效.
例如:这个表会导致重叠.
id start end
-------------------------------------------------------
1 2009-10-22 10:19:00.000 2009-10-22 11:40:00.000
2 2009-10-22 10:31:00.000 2009-10-22 13:34:00.000
3 2009-10-22 16:31:00.000 2009-10-22 17:34:00.000
Declare @Start datetime, @End datetime, @OtherStart datetime, @OtherEnd datetime, @id int, @endCheck bit
Set @endCheck = 0
DECLARE Cur1 CURSOR FOR
select id, start, end from table1
OPEN Cur1
FETCH NEXT FROM Cur1 INTO @id, @Start, @End
WHILE @@FETCH_STATUS = 0 AND @endCheck = 0
BEGIN
-- Get a cursor on all the other records
DECLARE Cur2 CURSOR …Run Code Online (Sandbox Code Playgroud) t-sql ×1