Присоединиться к последней записи на основе метки времени - PullRequest
0 голосов
/ 11 октября 2011

У меня есть журнал доступа, в котором записаны имена пользователей и временные метки в разных точках приложения. Я хочу узнать, могу ли я приблизить количество времени, которое они проводят в приложении. По сути, я хочу присоединить каждую запись к последней записи доступа на основе метки времени, чтобы я мог выяснить разницу во времени.

Я не могу придумать, как присоединиться к первой записи, отметка времени которой меньше текущей записи. Как это сделать?

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Я не могу придумать, как присоединиться к первой записи, отметка времени которой меньше текущей записи. Как это сделать?

Вы почти дали себе ответ:

Должно работать что-то похожее на приведенное ниже:

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 ...

1 голос
/ 11 октября 2011

Попробуйте что-то вроде этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...