1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| with cte_data_grp (res_id, res_Data, res_DateEvt, res_eve_id, grp) as
(
select res_id, res_Data, res_DateEvt, res_eve_id
, row_number() over( order by res_DateEvt asc)
- row_number() over(partition by res_eve_id order by res_DateEvt asc)
from RES
)
, cte_data_filter (res_id, res_Data, res_DateEvt, res_eve_id, grp, flt) as
(
select res_id, res_Data, res_DateEvt, res_eve_id, grp
, case res_eve_id
when 600 then row_number() over(partition by res_eve_id, grp order by res_DateEvt asc)
when 601 then row_number() over(partition by res_eve_id, grp order by res_DateEvt desc)
end
from cte_data_grp
)
, cte_data_pair (res_id, res_Data, res_DateEvt, res_eve_id, pair) as
(
select res_id, res_Data, res_DateEvt, res_eve_id
, (row_number() over(order by res_DateEvt asc) - 1)/ 2
from cte_data_filter
where flt = 1
)
select min(res_Data) as evt_600
, max(res_Data) as evt_601
, datediff(second, min(res_Data), max(res_Data)) as duree
from cte_data_pair
group by pair
order by pair asc;
evt_600 evt_601 duree
--------------------------- --------------------------- -----
2022-02-08 14:18:30.0000000 2022-02-08 14:33:45.0000000 915
2022-02-08 14:36:28.0000000 2022-02-08 14:37:44.0000000 76
2022-02-08 15:23:06.0000000 2022-02-08 15:24:45.0000000 99
2022-02-08 15:26:44.0000000 2022-02-08 15:28:15.0000000 91 |
Partager