Office中国论坛/Access中国论坛

标题: 这个语句怎么写 [打印本页]

作者: zt_ztt    时间: 2011-6-3 17:37
标题: 这个语句怎么写
工作证号        姓名        考试时间        考试分数        是否合格
201458        李明        2011-6-3        68        不合格
201458        李明        2011-6-2        88        不合格
201458        李明        2011-6-4        94        不合格
201458        李明        2011-6-5        98        不合格
201542        王琨        2011-6-2        94        不合格
201542        王琨        2011-6-4        97        不合格
201542        王琨        2011-6-3        98        不合格
201542        王琨        2011-6-5        100        合格
201674        江南        2011-6-3        88        不合格
201674        江南        2011-6-4        98        不合格
201674        江南        2011-6-5        100        合格
201987        李萌萌        2011-6-4        100        合格
201987        李萌萌        2011-6-3               
201987        李萌萌        2011-6-5       
工作证号相同的情况下,只保留最高分成绩的记录,其它成绩自动删除       

作者: roych    时间: 2011-6-3 17:47
本帖最后由 roych 于 2011-6-3 18:37 编辑

SELECT 表1.工作证号, Last(表.姓名) AS 姓名, Last(表1.考试时间) AS 考试时间, Max(表1.考试分数) AS 考试分数, Last(表1.是否合格) AS 是否合格 FROM 表1 GROUP BY 表1.工作证号;
试试看?获取最后一条记录和分数最大值

作者: aslxt    时间: 2011-6-3 20:07
建议表中增加一个id(自动编号)字段,方便处理一点。即:
DELETE 表.*, 表.id
FROM 表
WHERE (((表.id) Not In (SELECT 表.id
FROM 表 INNER JOIN [SELECT 表.工作证号, Max(表.考试分数) AS 考试分数之最大值 FROM 表 GROUP BY 表.工作证号]. AS 子查询1 ON (表.考试分数 = 子查询1.考试分数之最大值) AND (表.工作证号 = 子查询1.工作证号))));
注意,操作之前一定要备份,否则数据丢失!!!

作者: sinotrust    时间: 2011-6-3 22:28
建议用记录集接收数据,然后用循环工号,如果工号想等,则比较成绩,然将成绩低的记录删除。
作者: jxjawlh    时间: 2011-6-12 10:22
学习了,谢谢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3