这是我的第一篇帖子,因为我通常只能通过浏览其他问题找到答案,但我已尝试按照一些建议执行说明,例如this,this,{{ 3}}或this,但无济于事。
最终我想使用我的查询连接两个表(在MS Dynamics AX中)并显示用户的上次注销日期,以及我从许多表中提取的各种其他详细信息。但是,在第一个例子中,当我尝试检索上次注销日期时,我返回了数千列,而不是我预期的几百列(...并且没有包含最后一个日期列。)
但是为了简单起见,因为当从单个表中提取用户ID和上次注销日期时会显示相同的行为,这是我的查询(我只返回了用户名的最右边三个字符)匿名数据):
Use MicrosoftDynamicsAX
SELECT MAX(LOGOUTDATETIME) as LastLoggedOut,
RIGHT(USERID,3) as UserName
FROM SYSUSERLOG
GROUP BY LOGOUTDATETIME,
USERID
ORDER BY USERID
从这里我得到了17,632行返回,因为它带回了所有最后注销日期的用户的每个实例!
例如,这是此查询返回的结果的一小部分示例:
LastLoggedOut UserName
2015-09-03 07:40:36.000 nts
2015-09-03 07:43:20.000 nts
2015-09-03 07:44:10.000 nts
2015-09-03 07:47:44.000 nts
2015-09-03 07:56:33.000 nts
2015-09-03 08:05:11.000 nts
2015-09-04 02:18:58.000 nts
2015-09-15 01:23:59.000 nts
2015-09-15 06:27:13.000 nts
2015-09-15 06:59:44.000 nts
2015-09-15 07:01:33.000 nts
然而,我正在寻找的更像是这样:
LastLoggedOut UserName
6/10/2016 2:14:57 nbr
6/10/2016 2:14:22 ulc
6/10/2016 2:14:18 nne
6/10/2016 2:14:10 nci
6/10/2016 2:13:30 hae
6/10/2016 2:12:46 001
6/10/2016 2:11:31 idb
6/10/2016 2:10:38 rin
我已经尝试过交换HAVING的WHERE子句,以及尝试CTE并在WHERE子句中嵌套SELECT,但我对SQL的了解有点不完整,我希望你们中的一个聪明的人可能能够提供一些帮助。
TA
丹
答案 0 :(得分:0)
您按LogoutDateTime
进行分组。只需删除它。
Use MicrosoftDynamicsAX
SELECT MAX(LOGOUTDATETIME) as LastLoggedOut,
RIGHT(USERID,3) as UserName
FROM SYSUSERLOG
GROUP BY USERID
ORDER BY USERID