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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |