大家帮助我分析这个问题怎么解决:
第一场分   第二场分   第三场分   第四场分   第五场分    第六场分  总积分
  2          1         2          3          5         3        16
  1          1         3.5        6.5        2         2        16
  3          5         2          1          4         1        16
  3          7         2          4          2         3        19
  .......
以上这个表有若干条记录,其中总积分等于小场分数之和,其中总积分越少越领先,当有相同积分时,找出最小的分.比如:1,2,3条都为16分,找出第1条记录中最小值是1且有1个,第2条记录有2个1,第3条记录也有2个1,这时说明第2,3条记录都有两次第一,排在第1条记录的前面,因为第2,3条记录都有2个1,然后再看这两条记录有几比次小值,看谁的小,谁小谁排在前面,如果相同,再找下次个次小值,按这个算法把相同的记录排列,以上排列为:2,1,3 我真诚的希望大家帮助我一下,我的思路很乱,不知怎么比了,希望大家指点,最好写一下代码,告诉思路也可以,不明白的请与我联系:QQ 52523961 一直等待

解决方案 »

  1.   

    先按总积分排序,然后把总积分相同的纪录单独选出来,纪录下每个字段的值,再按升序把这些字段值排序(冒泡法之类)。生成一个临时表:F7纪录总积分,F1到F6纪录六个字段的值(注意,F1到F6并不是按顺序对应原来的第一场分到第六场分,因为每行纪录都又对列进行了排序)。
    这样临时表的行和列都是升序的。然后:
    select * from temptable order by F7,F1,F2,F3,F4,F5,F6就可以了