我有一张表,每行都是一个单独的电话,列是
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工具,但我不知道如何进行跨越行的计算。
答案 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'