Например. сравнивая первую строку и вторую строку invoice_status_change_datetime, пока она не перейдет в другой статус, нужно зафиксировать продолжительность в часах.
**AP_WORK_ID INVOICE_STATUS INVOICE_STATUS_CHANGE_DATETIME LAST_UPDATED_USER**
1060565 Assigned **2020-01-27 07:17:57.837** xxxxxx
1060565 Assigned **2020-01-27 10:17:57.837** yyyyyy
1060565 In Progress 2020-01-29 01:08:56.943 xxxxxx
1060565 Rejected 2020-01-28 07:17:57.837 xxxxxx
1060565 Hold 2020-01-28 10:17:57.837 yyyyyy
1060565 Closed 2020-01-29 01:08:56.943 xxxxxx
Но результат должен быть таким, как показано ниже, потому что я хочу объединить этот результат с другими условия соединения
**AP_WORK_ID Assigned_hrs In Progress_hrs Query_Resolved_hrs Rejected_hrs hold_hrs closed_hrs**
1060565 24 3 hrs null 10hrs 5hrs null
Я попробовал код, используя lead (), я получаю вывод также в часах, но я не знаю, как преобразовать в вышеуказанном формате:
SELECT isc.INVOICE_STATUS,
isc.INVOICE_STATUS_CHANGE_DATETIME,
DATEDIFF(HH, isc.INVOICE_STATUS_CHANGE_DATETIME, LEAD(isc.INVOICE_STATUS_CHANGE_DATETIME) OVER(
ORDER BY isc.INVOICE_STATUS_CHANGE_DATETIME)) AS status_change_Hours
FROM INVOICE_STATUS_CHANGE ISC
where isc.AP_WORK_ID = 1060565
GROUP BY isc.INVOICE_STATUS, isc.INVOICE_STATUS_CHANGE_DATETIME
I понять, что это немного сложно, может ли любой, кто освоил SQL знать, как этого добиться