2013-08-23 73 views
1

這是SQL命令中可能的。SQL獲取登錄和註銷時間戳

TABLE 

ID|USERID|TIMESTAMP   |ACTION| 
1 |USER1 |8/23/2013 3:25:10 PM|LOGOUT| 
2 |USER1 |8/23/2013 3:15:10 PM|LOGIN | 
3 |USER1 |8/23/2013 1:25:10 PM|LOGIN | 
4 |USER2 |8/23/2013 9:25:10 AM|LOGOUT| 
5 |USER2 |8/23/2013 8:25:10 AM|LOGIN | 

結果:

USERID|TIMESTAMP LOGIN  |TIMESTAMP LOGOUT  
USER1 |8/23/2013 3:15:10 PM|8/23/2013 3:25:10 PM 
USER1 |8/23/2013 1:25:10 PM| 
USER2 |8/23/2013 8:25:10 AM|8/23/2013 9:25:10 AM 

基本上我需要得到用戶的登錄日期和時間。由於用戶點擊x按鈕而不是點擊註銷按鈕,有些情況下沒有註銷條目。

感謝, RYL

+0

不能你處理它在前端? – zxc

+0

無法更改給定的表格。只使用SQL來格式化結果 – user2617053

回答

0

我猜你使用MS SQL服務器的MySQL的情況下刪除TOP 1並添加LIMIT 1子查詢的末尾:

select ID,USERID,TIMESTAMP as LOGIN_TIME, 
(SELECT TOP 1 
     CASE WHEN ACTION='LOGOUT' 
      THEN TIMESTAMP 
      ELSE NULL 
     END 

     FROM T 
     WHERE USERID=T1.USERID 
       AND 
       TIMESTAMP>T1.TIMESTAMP 
     ORDER BY TIMESTAMP 
) AS LOGOUT_TIME 

from T AS T1 
WHERE ACTION='LOGIN' 
ORDER BY ID 

SQLFiddle demo

+0

太棒了!謝謝@Valex – user2617053