2016-08-18 40 views
1

Table with unsorted dataSQL如何分组数据一起

与未排序的数据表显示我得到现在的数据。我需要做的是将用户名分组在一起。所以它会看起来像“带有分类数据的表”。如果我的问题不清楚,请告诉我。我不擅长解释事情。

Table with sorted data

+1

显示您当前的查询的样子。应该能够使用:ORDER BY UserName,isNull(loggedOn,somedate) – DaniDev

+0

查看您的数据 - 用户在注销一次之前可以多次登录。那是对的吗? – Nicarus

+0

是的,这是正确的@Nicarus – Jon

回答

0

根据您的意见,看来用户可以多次登录未注销。下面的查询将在每次登录后为每个用户抓取下一个最快的注销时间。如果没有会话ID,似乎没有任何方法可以保证哪个注销时间与每个登录关联。

Select UserName, 
    LoggedOn, 
    (select min(LoggedOut) from dbo.MyTable T1 where T.UserName = T1.UserName and T.LoggedOn <= T1.LoggedOut) 
from dbo.MyTable T 
where LoggedOn is not null 
0

在Sql数据总是显示没有组,但应用程序或报表使用这个重复的字段作为组,就像你喜欢做的一样。

+3

[如何回答](http://stackoverflow.com/help/how-to-answer)可以帮助你写出答案将被upvoted。 – zhon

0

这会给你你想要的,我相信。如果您不关心订单,除了将用户名分组在一起外,您可以按照Order by子句取消“,LoggedOn”。您还可以将其他参数放在第一个按字段排序,它会先按用户名顺序排列结果集,然后按登录,然后按x,然后按y ..

希望这会有所帮助。

select UserName, LoggedOn, LoggedOut 
from dbo.Table 
Order by Username, LoggedOn