求改一个语句

needanothercoder 2016-11-14 11:08:21
求大神帮助:我有一个语句如下

Select 班级,姓名,题号,交卷时间,答卷秒数=答卷用时 From 当日本班成绩表 Order by 答卷用时

这个语句的毛病是: "姓名"和"答卷秒数"相同而"交卷时间"不同的行,都会显示出来

我希望当同一个“姓名”的学生如果两次"答卷秒数"相同的时候, 只返回"交卷时间"最晚的那一行

比如

班级 姓名 题号 交卷时间 答卷秒数
3 张三 1 '2006-11-0813:37:56.233' 630
3 张三 1 '2006-11-0813:45:11.034' 630
3 李四 1 '2006-11-0813:37:56.233' 630

头两行就应该只显示出第二行,成为如下的样子:
班级 姓名 题号 交卷时间 答卷秒数
3 张三 1 '2006-11-0813:45:11.034' 630
3 李四 1 '2006-11-0813:37:56.233' 630
...全文
268 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
好好的ok 2016-11-15
  • 打赏
  • 举报
回复
楼上正解 WITH t(班级 ,姓名,题号,交卷时间,答卷秒数) AS( SELECT 3,N'张三',1,'2006-11-0813:37:56.233' ,630 UNION ALL SELECT 3,N'张三',1 ,'2006-11-0813:45:11.034',630 UNION ALL SELECT 3,N'李四',1,'2006-11-0813:37:56.233',630 ) SELECT t.班级 ,t.姓名,t.题号,t. 班级, t.交卷时间,t.答卷秒数 FROM t INNER JOIN ( SELECT 姓名,Max( 交卷时间 ) AS 交卷时间 FROM t GROUP BY 姓名) a ON t.姓名=a.姓名 and t.交卷时间=a.交卷时间
道素 2016-11-15
  • 打赏
  • 举报
回复

;WITH t(班级 ,姓名,题号,交卷时间,答卷秒数) AS(

    SELECT 3,N'张三',1,'2006-11-0813:37:56.233' ,630 UNION ALL
    SELECT 3,N'张三',1 ,'2006-11-0813:45:11.034',630 UNION ALL 
    SELECT 3,N'李四',1,'2006-11-0813:37:56.233',630

)
SELECT 班级 ,姓名,题号,交卷时间,答卷秒数 FROM (
   SELECT *,ROW_NUMBER()OVER(PARTITION BY 姓名,答卷秒数 ORDER BY 交卷时间 desc) AS rn FROM t
) a WHERE a.rn=1
/*
班级          姓名   题号          交卷时间                   答卷秒数
----------- ---- ----------- ---------------------- -----------
3           张三   1           2006-11-0813:45:11.034 630
3           李四   1           2006-11-0813:37:56.233 630
*/
shadowpj 2016-11-15
  • 打赏
  • 举报
回复
select 班级,姓名,题号,max(交卷时间) as 交卷时间,答卷秒数 from b group by 班级,姓名,题号,答卷秒数

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧