有一张学生成绩表,比如:
学号   考试序列号     成绩    自动增长字段作为记录关键字
1      A001          86         1
2      A001          93         2
3      A001          67         3
1      A002         98          4  
2      A002         92          5
3      A002         97          6
.......学号是每个学生的唯一编号,考试序列号是对每次考试的唯一识别号,成绩就该学生该次考试成绩。
请求一个SQL,生成一张查询表。
查询一张表,这个表要求生成一个学生某一次最高考试成绩及其对应的考试序列号和学生学号
比如结果如下:
学号    考试序列号    成绩
1       A002           98
2       A001           93
3       A002           97
这个SQL 怎么生成,环境 Access 2000

解决方案 »

  1.   

    select ta.学号,t1.考试序列号,ta.a as 成绩 from 
    (select 学号,max(成绩) as a from t1 group by 学号) as ta 
    inner join t1 
    on ta.学号=t1.学号 and ta.a=t1.成绩 order by ta.学号其中t1是原始表
      

  2.   

    谢谢兄弟,这个问题,我困扰了一下午了。马上结给你。
    另:请你查询,该问题,我都问题了3次,其中有一次,也是在Delphi问的,另一次是在数据库的Access版问题,请你进去接,问了3次一共是300分。斑竹看了我也不怕,不是倒分,这个问题解决对我很重要,问了一下午,就是没有人理睬。
    再次感谢!
      

  3.   

    对了,顺便问问,学生成绩是小数字段,小数字段用来进行SQL的等号连接,会不会因为精度问题,造成等号连接不正确呀。
    如:成绩本身是94.3分,数据库保存的时候会不会是 94.299999999,Max(成绩)出来又是 94.3这样二者不等就经常遇到数据库保存小数的时候后面带若干个999999,或若干个00000000000001 ,怕进行等号判断的时候,二者不等,麻烦
      

  4.   

    试试这样:select ta.学号,t1.考试序列号,ta.a as 成绩 from 
    (select 学号,max(成绩) as a from t1 group by 学号) as ta 
    inner join t1 
    on ta.学号=t1.学号 and (ta.a-t1.成绩<0.0001) and (ta.a-t1.成绩>-0.0001) 
    order by ta.学号