SQL Server 2016 DateDiff 跨行计算



>我有一个表格,其中每行都是一个单独的电话呼叫,列是

start time (datetime) 
end time (datetime)
user name (string)

以及一堆其他不需要的列。

我想从第 1 行的开始时间中减去第 2 行的结束时间,从而获得调用之间的时间。与第 3 行减去第 2 行等相同。所以我得到每个用户的输出

start time call X ||  User Name  ||  time between end of call X and start of call X+1
 2018-03-23 10:00 ||  John Smith ||             450s

我知道 SQL 服务器有一个行号功能,但我不确定如何进行跨行的计算。

感谢肖恩。我不知道滞后的存在。正是我需要的。我选择了下面的,这可能有点混乱,但似乎可以完成这项工作。

干杯!

SELECT
[icstarttime]
,[usName]
,datediff(s,[previoustime],[icStartTime]) as [seconds between calls]
FROM(
SELECT 
      [icStartTime]
      ,[icEndTime]
      ,[usName]
      ,LAG([icEndTime], 1,0) OVER (ORDER BY [icendTime]) AS Previoustime
  FROM [iPR].[dbo].[InboundCalls] ic left join [iPR].[dbo].[iGeneralUsers] ig on ic.icUserID = ig.usID
  where icClientID = '5C381D91-F74C-45BD-9EF6-0B42CC7654C8'
  and [icType] = 17
  and [usName] = 'Zp'
  --and [icStartTime] > '2018-22-03'
  )T
  where Previoustime > '2018'

相关内容

  • 没有找到相关文章

最新更新