注册 登录
编程论坛 ASP技术论坛

求教高手排序问题

syzycd 发布于 2012-03-23 22:23, 281 次点击
我一新手,学做成绩分析时,需把排序写入数据库,使用以下办法写入时
<%     '排序降序处理
set conn=Server.Createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("student.mdb")

Set rsList = server.CreateObject("Adodb.recordset") '存储所有成绩记录
Set rsClass = server.CreateObject("Adodb.recordset") '存储当前班次的记录

sql = "select 语文,班级,成绩,班序,校序 from 学生成绩"
rsList.open sql,conn,1,3

Do While Not rsList.eof
    '按成绩和考试项目进行班级排名次处理
    sql2 = "select DISTINCT 成绩  from 学生成绩 where 成绩> " & rsList("成绩") & " and 语文=" & rsList("语文") & " and 班级=" & rsList("班级")
    rsClass.open sql2,conn,1,1
    rsList("班序") = rsClass.recordcount + 1
    rsList.update
    rsClass.close

    '按成绩和考试项目进行年级排名次处理
    sql2 = "select DISTINCT 成绩  from 学生成绩 where 成绩> " & rsList("成绩") & " and 语文=" & rsList("语文")
    rsClass.open sql2,conn,1,1
    rsList("校序") = rsClass.recordcount + 1
    rsList.update
    rsClass.close

    rsList.movenext
Loop

rsList.close
conn.close
Set rsList = Nothing
Set rsClass = Nothing
Set conn = Nothing
response.write("排序降序处理成绩成功,数据库已安全关闭!")
%>
结果是:
语文       班级    成绩        级位         班位
1           1      34          1            1
1           1      45          2            2
1           1      45          2            2
1           2      67          3            1
1           2      76          4            2
2           1      56          4            3
2           1      45          2            1
2           1      54          3            2
2           2      43          1            1
2           2      76          5            2
这种完全中国式排序,在数据多时不太适合学校里的习惯。学校中更习惯EXCEL中的办法。像以下这样:
姓名    总分    班序    按以上办法的排序
李四    100     1        1
张三    100     1        1
王五    90      3        2
周六    90      3        2
郑七    85      5        3
我想得到第一种排序的结果,即:1,1,3,3,5 而不是上面那种排序:1,1,2,2,3
如高手能赐教,不胜感谢之至!

想了好久,问题已解决!


[ 本帖最后由 syzycd 于 2012-3-25 09:15 编辑 ]
1 回复
#2
imhenry2012-03-25 09:10
回复 楼主 syzycd
问题已解决。
1