>我有一个表格,其中每行都是一个单独的电话呼叫,列是
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'