sql логическая сортировка
Имеется БД в MS SQL Server, Таблица WorkitemsCache содержит жизненный цикл талона (тикета), который разработчик доводил до логического завершения.

Требуется вернуть список строк, которые отрываются более чем на 5 мин от предыдущей строки с таким же TicketId. Планирую это реализовать с помощью подзапроса и ORDER BY, но выхода пока не нашел. Заранее спасибо за вашу помощь.
Ответы (1 шт):
Автор решения: dzhukov
→ Ссылка
Если так:
declare
@t table (Ticket int, DT datetime)
declare
@dt datetime=getdate()
insert into @t
select 1, @dt
union all
select 1, dateadd(minute, 1, @dt)
union all
select 1, dateadd(minute, 7, @dt)
union all
select 1, dateadd(minute, 10, @dt)
union all
select 1, dateadd(minute, 37, @dt)
union all
select 2, @dt
union all
select 2, dateadd(minute, 2, @dt)
union all
select 2, dateadd(minute, 10, @dt)
union all
select 2, dateadd(minute, 25, @dt)
union all
select 2, dateadd(minute, 27, @dt)
select *, datediff (minute, PrevDT, DT) from (
select *, LAG (DT, 1 ) over (PARTITION BY Ticket order by Ticket, DT) as PrevDT
from @t
)t
where datediff (minute, PrevDT, DT)>5