我有一个访问日志,它记录应用程序中各个点的用户名和时间戳。我想看看我是否可以估算他们在应用程序中花费的时间。基本上我想根据时间戳将每条记录加入到最后一条访问记录中,这样我就能算出时差。
我想不出如何加入时间戳小于当前记录的第一条记录。这样做的方法是什么?
答案 0 :(得分:1)
尝试这样的事情:
SELECT A.UserName, A.EntryDate, DATEDIFF(ss,A.EntryDate, B.EntryDate) SecondsDuration
FROM YourTable A
OUTER APPLY (SELECT MAX(EntryDate) EntryDate
FROM YourTable
WHERE UserName = A.UserName AND EntryDate < A.EntryDate) B
答案 1 :(得分:1)
我想不出如何加入时间戳小于当前记录的第一条记录。这样做的方法是什么?
你几乎给了自己答案:
类似下面的内容应该有效:
SELECT
lt.*,
lastentry.timeofEntryColumn,
DATEDIFF( second, lt.timeofEntryColumn, lt.timeofEtnryColumn) AS DifferenceinSeconds
FROM logTable lt
LEFT OUTER JOIN logtable AS lastentry
ON lastentry.ID = (SELECT TOP 1 ID FROM logtable lt2
WHERE lt2.timeofEntryColumn < lt.timeofEntryColumn
ORDER BY lt2.timeofEntryColumn desc)
当然,您应该为此添加更多内容:可能是需要userID匹配的外部联接的条件...