gpt4 book ai didi

sql-server - Sql 内连接或自连接

转载 作者:行者123 更新时间:2023-12-03 16:38:10 27 4
gpt4 key购买 nike

我有一个从程序填充的 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

所以我需要我的登录信息以及同一行中的时间日志。

我怎样才能做到这一点?

我是否应该通过登录过滤我的第一个表,然后通过注销或 logoneexpired 对第二个表执行相同操作,然后在 session 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'

我发现登录时没有收到注销的问题,在这种情况下,即使我进行了左连接,我的表中也缺少登录记录。请让我知道我哪里出错了。

谢谢,马尼坎丹

最佳答案

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'

您已经在问题中提到了自加入...您应该尝试一下 :)

关于sql-server - Sql 内连接或自连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30375678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com