我有一个名为Login的表。我想获得每个用户上次登录的天数
请参阅以下示例数据:
tableName: Login
ID|UserName|LoginDateTime
1 |User1 |04/09/12 18:07:06
2 |User1 |04/09/12 18:07:51
3 |User1 |04/09/12 18:21:41
4 |Admin |17/09/12 15:36:30
5 |Admin |17/09/12 15:36:30
这是我的SQL命令:
SELECT LoginDateTime, UserName,(DATEDIFF (DAY, [LoginDateTime], GETDATE ()))
AS [datediff]
FROM Login;
结果:
ID|UserName|LoginDateTime |No. of Days
1 |User1 |04/09/12 18:07:06|414
2 |User1 |04/09/12 18:07:51|414
3 |User1 |04/09/12 18:21:41|414
4 |Admin |17/09/12 15:36:30|401
5 |Admin |17/09/12 15:36:30|401
但我想删除重复记录
ID|UserName|LoginDateTime |No. of Days
1 |User1 |04/09/12 18:07:06|414
2 |Admin |17/09/12 15:36:30|401
感谢任何帮助。
答案 0 :(得分:3)
如果您想获得每个用户的最新登录信息,请尝试此操作。
SELECT UserName, MAX([LoginDateTime]) AS LoginDateTime,
(DATEDIFF (DAY, MAX([LoginDateTime]), GETDATE ())) as [datediff]
FROM Login
GROUP BY UserName
我们的想法是使用GROUP BY
按用户名对所有行进行分组,使用MAX
聚合函数只获取具有最新LoginDateTime的行,然后计算使用该最新loginDateTime的天数。