微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 按最大值分组时选择不同的行

我目前有下表:
ID   |  Name    |  EventTime            |  State
1001 |  User 1  |  2013/07/22 00:00:05  |  15
1002 |  User 2  |  2013/07/23 00:10:00  |  100
1003 |  User 3  |  2013/07/23 06:15:31  |  35
1001 |  User 1  |  2013/07/23 07:13:00  |  21
1001 |  User 1  |  2013/07/23 08:15:00  |  25
1003 |  User 3  |  2013/07/23 10:00:00  |  22
1002 |  User 2  |  2013/07/23 09:18:21  |  50

我需要的是上次事件时间中每个不同用户标识的状态,类似于以下内容

ID   |  Name    |  EventTime            |  State
1001 |  User 1  |  2013/07/23 08:15:00  |  25
1003 |  User 3  |  2013/07/23 10:00:00  |  22
1002 |  User 2  |  2013/07/23 09:18:21  |  50

我需要类似下面的东西,但我不能得到我需要的东西.

SELECT ID,Name,max(EventTime),State
FROM MyTable
GROUP BY ID

解决方法

支持分析函数数据库中,您可以使用row_number():
select  *
from    (
        select  row_number() over (partition by ID 
                                   order by EventTime desc) as rn,*
        from    YourTable
        ) as SubQueryAlias
where   rn = 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐