如何得到分组后的主键ID
有表如下成绩表,得到每个人最高成绩排名,并且知道对象的主键ID
主键ID 用户名 成绩 日期
1 张三 500 2012-01-01
2 张三 400 2012-01-02
3 李四 100 2012-01-04
4 李四 200 2012-01-05
查每个人最高成绩排名SQL为
SELECT Row_Number OVER (ORDER BY 成绩 DESC) AS Num , 用户名FROM 成绩表GROUP BY 用户名
--> 测试数据:[test]if object_id('[test]') is not null drop table [test]create table [test]([主键ID] int,[用户名] varchar(4),[成绩] int,[日期] datetime)insert [test]select 1,'张三',500,'2012-01-01' union allselect 2,'张三',400,'2012-01-02' union allselect 3,'李四',100,'2012-01-04' union allselect 4,'李四',200,'2012-01-05'select * from [test] awhere a.成绩=(select max(成绩) from [test] b where a.用户名=b.用户名)/*主键ID 用户名 成绩 日期-------------------------------------------------1 张三 500 2012-01-01 00:00:00.0004 李四 200 2012-01-05 00:00:00.000*/
[解决办法]