SQL: Как получить информацию о вычитаемой дате в datediff столбце

Всем привет! Я написал следующий скрипт для получения разницы во времени в столбце [Correct_time] между текущей и нижестоящей строкой:

WITH t1 AS 
(
    SELECT ROW_NUMBER() OVER(ORDER BY [Correct_time]) AS ROW1,
    [Correct_time] AS tm_1
    FROM Table_name
    WHERE [Телефон консультанта] LIKE '79636143ХХХ'
),
t2 AS 
(
    SELECT ROW_NUMBER() OVER(ORDER BY [Correct_time])-1 AS ROW2,
    [Correct_time] AS tm_2
    FROM Table_name
    WHERE [Телефон консультанта] LIKE '79636143ХХХ'
)
SELECT Table_name.*, DATEDIFF(mi,t2.tm_2,t1.tm_1) AS DIFF
FROM t1 
LEFT JOIN t2 
ON t2.ROW2 = t1.ROW1
LEFT JOIN Table_name 
ON t1.tm_1 = Table_name.[Correct_time]
WHERE Table_name.[Телефон консультанта] LIKE '79636143ХХХ'
ORDER BY t1.tm_1

Пример результата ниже:

Correct_time               DIFF
2020-02-22 12:12:08.000     -7
2020-02-22 12:19:02.000     -6
2020-02-22 12:25:18.000     -83
2020-02-22 13:48:59.000     -66

Я хочу получать пару строк, разница в минутах между которыми составляет меньше часа. Если же сейчас я добавлю фильтр [< 60], то результат отразит мне только первые две строки:

Correct_time               DIFF
2020-02-22 12:12:08.000     -7
2020-02-22 12:19:02.000     -6

А мне нужно иметь в результате информацию в том числе о вычитаемой дате (В моем случае это: "2020-02-22 12:25:18.000").

Буду благодарен за помощь.


Ответы (1 шт):

Автор решения: Герман Борисов
WITH t AS 
(
    SELECT
      Table_name.*,
      ROW_NUMBER() OVER(ORDER BY [Correct_time]) AS ROW1
    FROM Table_name
    WHERE [Телефон консультанта] LIKE '79636143ХХХ'
)
SELECT T.*
FROM t 
LEFT JOIN t AS tn ON tn.ROW1 = t.ROW1 + 1
LEFT JOIN t AS tp ON tp.ROW1 = t.ROW1 - 1
WHERE DATEDIFF(mi, t.tm_2, tn.tm_1) < 60
   OR DATEDIFF(mi, tp.tm_2, t.tm_1) < 60
ORDER BY t1.tm_1
→ Ссылка