计算同一列sql服务器上的时间差

问题描述 投票:0回答:1

我想获得每个应用程序的行之间的时间差,如果时间差小于5分钟,则视为一个应用程序。

输入:

    AppNumber   Employee    Date    Time_generatedat
    143270137   shiva   23/09/2019  12:24   
    143270137   shiva   23/09/2019  12:25   
    143270137   shiva   23/09/2019  12:27   
    143270137   shiva   23/09/2019  13:16   
    12339090    kalyan  23/09/2019  08:13   
    12339090    kalyan  23/09/2019  09:14   

输出:

    AppNumber   Employee    Date    Time_generatedat    output
    143270137   shiva   23/09/2019  12:24               1
    143270137   shiva   23/09/2019  12:25               1
    143270137   shiva   23/09/2019  12:27               1 
    143270137   shiva   23/09/2019  13:16               2
    12339090    kalyan  23/09/2019  08:13               1
    12339090    kalyan  23/09/2019  09:14               2

enter image description here

谢谢。

sql server sql-server-2008-r2
1个回答
0
投票

您可以使用lag()和累计金额:

select t.*,
       sum(case when prev_time_generatedat > dateadd(minute, -5, time_generatedat)
                then 0 else 1
           end) over (partition by appnumber, date order by time_generatedat) as output
from (select t.*,
             lag(time_generatedat) over (partition by appnumber, date order by time_generatedat) as prev_time_generatedat
      from t
     ) t;
© www.soinside.com 2019 - 2024. All rights reserved.