我希望创建一个查询来计算员工在 5 分钟内处于非活动状态的次数。现在,我想到了一个 CASE 语句,它将他们的扫描分解为 12 段(不要介意转换——我们必须将所有需要更改为 4 小时后,因为服务器位于另一个时区(它糟透了)
case
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '0' and '4' then 0
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '5' and '9' then 1
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '10' and '14' then 2
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '15' and '19' then 3
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '20' and '24' then 4
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '25' and '29' then 5
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '30' and '34' then 6
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '35' and '39' then 7
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '40' and '44' then 8
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '45' and '49' then 9
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '50' and '54' then 10
when DATEPART(minute, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, th1.ACTIVITY_DATE_TIME), DATENAME(TzOffset, SYSDATETIMEOFFSET())))) between '55' and '59' then 11
END))
然后我取出不同数量的数字 0-11 并从 12 中减去它。我知道这不是一个完美的系统,因为如果有人在 7:01 进行扫描,而在 7:09 进行下一次扫描,它不会标记为 5 -分钟间隙。
有谁知道跟踪交易历史差距的更好方法?