У меня есть таблица, содержащая несколько интервалов времени (в виде двух TIME
столбцов)
Например:
TimeBegin TimeEnd
---------------- ----------------
00:00:00.0000000 01:00:00.0000000
01:00:00.0000000 02:00:00.0000000
01:30:00.0000000 03:00:00.0000000
Мне нужно выяснить, образуют ли промежутки времени последовательность (в вышеуказанном случае с 00.00 до 03.00). Некоторые временные интервалы могут перекрываться, как в случае выше.
Редактировать
Я расширил свой стол до:
WeekDay TimeBegin TimeEnd
----------- ---------------- ----------------
3 00:00:00.0000000 01:00:00.0000000
3 01:00:00.0000000 02:00:00.0000000
3 02:30:00.0000000 04:00:00.0000000
и использовал запрос:
;with sequenced as (
select *,rn=ROW_NUMBER() over (order by timebegin)
from tbl
where weekday(timebegin) = 2)
select *
from sequenced a
join sequenced b on a.rn=b.rn-1
where a.TimeEnd < b.TimeBegin
но в нем говорится, что «день недели» не является распознанным именем встроенной функции.
поэтому я изменил его на:
;with sequenced as (
select *,rn=ROW_NUMBER() over (order by timebegin)
from tbl
where weekday = 2)
select *
from sequenced a
join sequenced b on a.rn=b.rn-1
where a.TimeEnd < b.TimeBegin
но затем возвращает строку, содержащую
WeekDay TimeBegin TimeEnd
3 01:00:00.0000000 02:00:00.0000000
что на самом деле в последовательности?
спасибо
Томас