2011-10-11 54 views
0

我有一個訪問日誌,它記錄了應用程序中各個點的用戶名和時間戳。我想看看我是否可以估計他們在應用程序中花費的時間。基本上我想根據時間戳將每條記錄加入最後的訪問記錄,所以我可以計算出時間差。基於TimeStamp加入最後一條記錄

我想不出如何加入時間戳小於當前記錄的第一條記錄。有什麼辦法做到這一點?

+0

你使用的是什麼數據庫引擎和版本? – Lamak

+0

哎呀,忘了。 MS-SQL 2008 – Kratz

回答

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 
+0

這似乎工作,謝謝。我將不得不閱讀有關申請,我以前從未使用過。 – Kratz

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) 

當然,你應該多一些添加到此:也許到外的條件加入該需要用戶ID匹配...

+0

如何添加條件以從同一用戶中選擇最後一個條目?這只是發現到最後一個條目的時間差。我如何將該條件添加到子查詢中? – Kratz

相關問題