好了,天热,大家都消消火,都是讨论问题的么,没必要。也怪我在打牌之余没详查,以致代码不对。现在更正如下:
SELECT Bjh 班级, Xm 姓名, Tot 总分 ; FROM Cjk ; WHERE Cjk.Bjh+STR(Cjk.Tot)=ANY ; (SELECT Bjh+STR(MAX(Tot)) ; FROM Cjk GROUP BY Bjh)
执行结果如下图:
现在是bjh在表中没有现成的字段它要通过从学号中截取来获得(subs(xh,1,4) as bj,)哪上述的代码如何改写?特别是子查询中的select后的语句与group by 后的语句?
这个就没有办法了,得再弄一层子查询,先把班级号从学号中剥离出来,然后再用我上面的方法。命令是:
SELECT Xh 学号, Xm 姓名, Tot 总分 ; FROM Cjk ; WHERE LEFT(Xh,1)+STR(Tot) IN ; (SELECT Bjh+STR(MAX(Tot)) ; FROM (SELECT LEFT(Xh,1) Bjh, Tot ; FROM Cjk) T1; GROUP BY Bjh)
其中,红色代码部分就是用来把班级号从学号中剥离,形成一个有单独班级号字段的临时表文件T1。这里的班级号是一位,你是四位的话,可以把整个命令中的LEFT(Xh,1)改成LEFT(Xh,4)。