跨行的SQL Server 2016 DateDiff计算

时间:2018-03-23 14:16:28

标签: sql-server row-number

我有一张表,每行都是一个单独的电话,列是

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

和一堆其他不需要的列。

我想从第2行的开始时间减去第1行的结束时间,因此获取调用之间的时间。从第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服务器有一个rownumber工具,但我不知道如何进行跨越行的计算。

1 个答案:

答案 0 :(得分:0)

感谢肖恩。我不知道滞后存在。正是我需要的。我跟下面去了,这可能有点乱,但似乎做了这个工作。

干杯!

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'