2013-12-03 29 views
1

我发现的东西,我不能用我自己解决。缺乏解决问题的技巧... :(不同用户,获得最后的登录信息

我需要从这个表例如得到的结果来选择与他的ID每个用户,并显示他们的最后一次登录信息, :

id  name  loginTime       logoutTime 
3  test  2013-11-25 22:50:00     null 
4  test1  2013-11-20 07:23:18     null 
6  test2  2013-11-19 11:17:22     null 
3  test3  2013-11-27 14:20:54     null 
16  test4  2013-11-09 13:52:21     null 
3  test  2013-12-02 23:07:43     null 
2  test5  2013-11-11 18:15:31     null 
4  test1  2013-11-17 19:13:59     null 
6  test2  2013-11-30 03:10:07     null 
... 

我需要得到:

id  name  loginTime       logoutTime 
2  test5  2013-11-11 18:15:31     null 
3  test  2013-12-02 23:07:43     null 
4  test1  2013-11-20 07:23:18     null 
6  test2  2013-11-30 03:10:07     null 
16  test4  2013-11-09 13:52:21     null 
... 

到目前为止,我已经使用DISTINCT给不同用户,但与让每个不同的用户登录的最后日期的问题...

w ^帽子是实现这一目标的最佳方式吗?

回答

3
select max(loginTime), id, name 
from your_table 
group by id, name 
+0

OK,我觉得愚蠢现在...当我看到函数max()和组由我很惭愧......简单的功能和分组解决了这个问题...对不起,让你烦恼...... – dovla091

0
SELECT id, name, logintime, logouttime a from table where logintime=(select max(logintime) from table b where a.id = b.id) 
0

在一个CTE row_number()排序他们,然后在选择最新的过滤:

declare @log table (id int, name varchar(10), loginTime datetime, logoutTime datetime); 
insert into @log 
select 3,  'test',  '2013-11-25 22:50:00',     null union all 
select 4,  'test1',  '2013-11-20 07:23:18',     null union all 
select 6,  'test2',  '2013-11-19 11:17:22',     null union all 
select 3,  'test3',  '2013-11-27 14:20:54',     null union all 
select 16,  'test4',  '2013-11-09 13:52:21',     null union all 
select 3,  'test',  '2013-12-02 23:07:43',     null union all 
select 2,  'test5',  '2013-11-11 18:15:31',     null union all 
select 4,  'test1',  '2013-11-17 19:13:59',     null union all 
select 6,  'test2',  '2013-11-30 03:10:07',     null 


;with yak as 
( select [r]=row_number()over(partition by name order by loginTime desc), * 
    from @log 
) 
select * 
from yak 
where r = 1; 

你也可以只MAX(LoginDate)在其他的答案中提到。

+0

感谢队友,但我想尽可能地简单,所以上面的帖子是完美的......干杯:) – dovla091