我需要表的行之间的差异。我得到了结果,但第一行为空,所以预期的结果将移到下一行。如何从时差的第一列中删除空值
下面是我的查询
SELECT
T1.[ID]
,T1.[url_rec]
, '' As Diff
,record_timestamp
,CONVERT(VARCHAR(8),record_timestamp - lag(record_timestamp, 1) OVER (ORDER BY T1.[ID]),108)
FROM (
SELECT
[ID]
,[url_rec]
,[record_timestamp]
,ROW_NUMBER() OVER (ORDER BY [ID]) AS 'RowNum'
FROM raw_activity_log T
) T1
LEFT JOIN (
SELECT
[ID]
,[url_rec]
,ROW_NUMBER() OVER (ORDER BY [ID]) AS 'RowNum'
FROM raw_activity_log T
) T2
ON T2.[RowNum] + 1 = T1.[RowNum]
WHERE T1.[url_rec] <> ISNULL(T2.[url_rec], '')
ORDER BY T1.[ID];
d | URL | Record_Time差异 | |
---|---|---|---|
1 | https://sabezyessent.teramind.co/#/welcome | 2022-05-09 09:44:22.000 | 空 |
2 | https://sabezyessent.teramind.co/#/report/4 | 2022-05-09 09:47:42.000 | 00:03:20|
3 | https://sabezyessent.teramind.co/#/clock | 2022-05-09 09:47:37.000 | 23:59:55|
4 | https://sabezyessent.teramind.co/#/manage/users/profile/2 | 2022-05-09 09:47:45.000 | 00:00:08
您可以使用CURSOR将上述查询结果作为动态查询进行遍历,这可能有助于您计算每个记录之间的时间差,并且您可以使用TIMSDIFERENCE 更新每个记录
以链接为例:在存储过程中使用带有动态SQL的游标