[Solved] SQL query to get time spent on specific statuses based on single datetime column [closed]

[ad_1]

with SQL Server you can use those very usefull windowed functions LEAD and FIRST_VALUE :

select *
    ,[duration(sec)] = DATEDIFF(SECOND
                                ,ticketTime
                                ,LEAD(ticketTime,1,ticketTime)over(partition by ticketNumber order by ticketTime)
                                )

    ,[cumulative duration(sec)] = DATEDIFF( SECOND
                            , FIRST_VALUE(ticketTime)over(partition by ticketNumber order by ticketTime)
                            , ticketTime)
from (values
     (1,cast('20211101 10:00:01' as datetime))
    ,(1,'20211101 10:00:33')
    ,(1,'20211101 10:01:59')
 )T(ticketNumber,ticketTime)
ticketNumberticketTimeduration(sec)cumulative duration(sec)
12021-11-01 10:00:01.000320
12021-11-01 10:00:33.0008632
12021-11-01 10:01:59.0000118

[ad_2]

solved SQL query to get time spent on specific statuses based on single datetime column [closed]