根据TimeStamp加入最后记录

时间:2011-10-11 15:00:59

标签: sql sql-server-2008 join

我有一个访问日志,它记录应用程序中各个点的用户名和时间戳。我想看看我是否可以估算他们在应用程序中花费的时间。基本上我想根据时间戳将每条记录加入到最后一条访问记录中,这样我就能算出时差。

我想不出如何加入时间戳小于当前记录的第一条记录。这样做的方法是什么?

2 个答案:

答案 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匹配的外部联接的条件...