设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

搜索
查看: 2111|回复: 2

[求助] 求一个排名SQL2000的写法。急,急,急,急,急

[复制链接]
发表于 2014-5-8 19:47:35 | 显示全部楼层 |阅读模式
表Member
自增长ID      用户名             用户积分              获胜场                   失败场                    进球                   失球
MemberId    MemberName   MemberIntegral     MemberVictory      MemberNegative     MemberInBall      MemberLossBall
1                 张三                  100                      5                           1                             2                       5
2                 李四                  200                      6                           2                             5                       6
3                 王五                  300                      7                           5                             3                       3
4                 小三                  400                      8                           7                             6                       6
5                 白脸                  100                      9                           9                             7                       7
6                 哈哈                  200                     10                          11                           8                       8

想按照积分显示名次 (不是排序),当积分相等的时候在按照(MemberVictory-MemberNegative)排名,当在相等的时候按照(MemberInBall-MemberLossBall)排名。如果还重复按照ID排序。

也就是按照order by MemberIntegral  desc , (MemberVictory-MemberNegative) desc , (MemberInBall-MemberLossBall) desc , MemberId desc
但是这个只能是得到一个排序,没法获得排名,我想要的效果是

自增长ID      用户名             用户积分              获胜场                   失败场                    进球                   失球                         排名
MemberId    MemberName   MemberIntegral     MemberVictory      MemberNegative     MemberInBall      MemberLossBall        MemberRank
4                 小三                  400                      8                           7                             6                       6                              1
3                 王五                  300                      7                           5                             3                       3                              2
2                 李四                  200                      6                           2                             5                       6                              3
6                 哈哈                  200                     10                          11                           8                       8                              4
1                 张三                  100                      5                           1                             2                       5                              5
5                 白脸                  100                      9                           9                             7                       7                              6

是SQL2000不是05,没有rank()函数。

 楼主| 发表于 2014-5-8 20:42:49 | 显示全部楼层
找到一方法,但是貌似还是不行
  1. SELECT MemberId, MemberName, MemberPhoto, MemberState, MemberPauseDate,
  2.       MemberAppearance, MemberVictory, MemberFlat, MemberNegative, MemberInBall,
  3.       MemberLossBall, MemberIntegral,
  4.           (SELECT COUNT(DISTINCT MemberIntegral)
  5.          FROM member
  6.          WHERE (MemberIntegral + (MemberVictory - MemberFlat)
  7.                + (MemberInBall - MemberLossBall))
  8.                >= (a.MemberIntegral + (a.MemberVictory - a.MemberFlat)
  9.                + (a.MemberInBall - a.MemberLossBall))) AS Place
  10. FROM Member a
  11. ORDER BY Place
复制代码
 楼主| 发表于 2014-5-8 20:45:28 | 显示全部楼层
本帖最后由 阻击手 于 2014-5-12 10:53 编辑

还是搞不定啊
  1. SELECT MemberId, MemberName, MemberPhoto, MemberState, MemberPauseDate,
  2.       MemberAppearance, MemberVictory, MemberFlat, MemberNegative, MemberInBall,
  3.       MemberLossBall, MemberIntegral,
  4.           (SELECT COUNT(*)
  5.          FROM member
  6.          WHERE (MemberIntegral + (MemberVictory - MemberFlat)
  7.                + (MemberInBall - MemberLossBall))
  8.                >= (a.MemberIntegral + (a.MemberVictory - a.MemberFlat)
  9.                + (a.MemberInBall - a.MemberLossBall))) AS MmberRank
  10. FROM Member a
  11. ORDER BY MmberRank
复制代码
您需要登录后才可以回帖 登录 | 加入无忧

本版积分规则

小黑屋|手机版|Archiver|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445   鄂公网安备 42011102000433号

GMT+8, 2017-11-18 07:04 , Processed in 0.095720 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表