加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:47:11 所属栏目:MsSql教程 来源:网络整理
导读:我目前有下表: ID | Name | EventTime | State1001 | User 1 | 2013/07/22 00:00:05 | 151002 | User 2 | 2013/07/23 00:10:00 | 1001003 | User 3 | 2013/07/23 06:15:31 | 351001 | User 1 | 2013/07/23 07:13:00 | 211001 | User 1 | 2013/07/23 08:15:00
我目前有下表:
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读