Мне нужно добавить DATEDIFF в запрос, который дает мне часы между полем текущей строки и тем же полем предыдущей строки.
РЕДАКТИРОВАТЬ: {Должен ли я ЗАКАЗАТЬ весь запрос по ROUTED_DTM DESC, кака также сделать ORDER BY в DATEDIFF DESC?
В одной строке у меня ROUTED_DTM '2019-05-07 15: 36: 13.000', в строке выше ROUTED_DTM '2019-05-01 14: 19: 52.000'.Я ожидаю, что AGE_IN_ROLE_DAY, AGE_IN_ROLE_HR, AGE_IN_ROLE_MIN, AGE_IN_ROLE_SEC будут 6, 1, 16 и 21 (по порядку).Однако я получаю 0, 0, 0, -2.}
SELECT c.ID,
c.PAID_DT,
DATEDIFF(dd,
CASE WHEN c.ID_ADJ_FROM = '' THEN c.RECD_DT ELSE c.INPUT_DT END,
CASE WHEN c.PAID_DT = '1/1/1753' THEN CONVERT(DATE,GETDATE()) ELSE c.PAID_DT END) + 1 AS DAYS_OLD
DATEDIFF(dd, h.ROUTED_DTM, LAG(h.ROUTED_DTM) OVER (ORDER BY h.ROUTED_DTM DESC)) AS AGE_IN_ROLE_DAY,
DATEDIFF(hh, h.ROUTED_DTM, LAG(h.ROUTED_DTM) OVER (ORDER BY h.ROUTED_DTM DESC)) AS AGE_IN_ROLE_HR,
DATEDIFF(MM, h.ROUTED_DTM, LAG(h.ROUTED_DTM) OVER (ORDER BY h.ROUTED_DTM DESC)) AS AGE_IN_ROLE_MIN,
DATEDIFF(ss, h.ROUTED_DTM, LAG(h.ROUTED_DTM) OVER (ORDER BY h.ROUTED_DTM DESC)) AS AGE_IN_ROLE_SEC,
h.QUEUE_ID,
h.QUEUE_DESC,
h.ROLE_ID,
h.ROLE_DESC,
h.ROUTED_DTM
FROM table1 c
LEFT JOIN table2 h
ON h.ID = c.ID
LEFT JOIN table 3 q
ON q.QUEUE_ID = h.QUEUE_ID
LEFT JOIN table4 r
ON r.ROLE_ID = h.ROLE_ID
ORDER BY c.ID, h.ROUTED_DTM DESC
Я хочу добавить DATEDIFF (s) перед столбцом h.QUEUE_ID, который дает разницу между текущей строкой h.ROUTED_DTM,и h.ROUTED_DTM предыдущей строки
В настоящее время запрос возвращает правильные результаты, однако я не уверен, как добавить новый DATEDIFF в каждую строку.