我有一個程序填充一個SQL表和數據是這樣的:的Sql內部聯接或自聯接
主鍵 - 請求ID 列
Request ID Session ID UserID LoginOperation Time
1 1 Arun Logon 8:00
2 1 Arun Logoff 8:30
3 2 Sandy Logon 7:55
4 2 Sandy Logon Expired 8:38
現在我需要的是
Request ID Session ID UserID LoginOperation Time Login Operation Time
1 1 Arun Logon 8:00 Logoff 8:30
3 2 Sandy Logon 7:55 LogonExpired 8:38
因此,我將需要我的登錄信息以及同一行中的時間日誌。
我該如何做到這一點?
我應該使用登錄過濾我的第一張表格,然後通過logoff或logonexpired對第二個表格執行相同的操作,然後在會話ID上內部連接兩個表格。 ?
或者,我可以做自連接這些表上的一些地方條件..
請讓我知道你的建議嗎?
嗨,
我想出了下面的查詢來獲取我的登錄信息與註銷時間一起。
Select T.COGIPF_LOCALTIMESTAMP, T.COGIPF_SESSIONID, T.COGIPF_REQUESTID,
T.COGIPF_STATUS, T.COGIPF_LOGON_OPERATION, T.COGIPF_USERNAME,
T.COGIPF_USERID, T.COGIPF_NAMESPACE, T.COGIPF_CAMID,
Z.COGIPF_LOCALTIMESTAMP as LogOffTime
from [CognosAuditSampleDev].COGIPF_USERLOGON T
LEFT JOIN [CognosAuditSampleDev].COGIPF_USERLOGON Z on
T.COGIPF_SESSIONID = Z.COGIPF_SESSIONID and
Z.COGIPF_LOGON_OPERATION <>'Logon'
where T.COGIPFSTATUS='Success' And Z.COGIPFSTATUS ='Success' And
T.COGIPF_LOGON_OPERATION='Logon'
,我發現一個問題,當沒有輸入登錄的人都收到LOGG,在這種情況下,登錄記錄丟失在我的表即使我做了左連接。請讓我知道我出錯的地方。
感謝, Manikandan
什麼版本的SQL?它可以爲這種查詢做出改變。 –
...然後再按照@Joel Coehoorn,也許不是。 –