我有一个从程序填充的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
Run Code Online (Sandbox Code Playgroud)
现在我需要的是
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
Run Code Online (Sandbox Code Playgroud)
所以我需要我的登录信息以及同一行中的时间日志.
我怎样才能做到这一点?
我应该使用登录过滤我的第一个表,然后通过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'
Run Code Online (Sandbox Code Playgroud)
我发现登录时没有收到logg的问题,在这种情况下,即使我执行左连接,我的表中也缺少登录记录.请让我知道我哪里出错了.
谢谢,Manikandan
SELECT r1.RequestID, r1.SessionID, r1.UserId, r1.LoginOperation, r1.Time
, r2.LoginOperation, r2.Time
FROM Requests r1
INNER JOIN Requests r2 on r2.SessionID = r1.SessionID and r2.LoginOperation <> 'Logon'
WHERE r1.LoginOperation = 'Logon'
Run Code Online (Sandbox Code Playgroud)
你已经提到了问题中的自我加入...你应该试试:)
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |