具体问题具体分析,要是有数据参考,可以考虑是否使用别的方法。
top 3 就不感觉不错了

解决方案 »

  1.   


    create table student(id int, name varchar(10), cj int, rq datetime)
    insert student select 1, 'AA', 68, '2007-01-02'
    insert student select 2, 'BB', 88, '2007-01-02'
    insert student select 3, 'CC', 90, '2007-01-02'
    insert student select 4, 'DD', 65, '2007-01-02'
    insert student select 5, 'EE', 70, '2007-01-02'insert student select 1, 'AA', 78, '2007-02-02'
    insert student select 2, 'BB', 80, '2007-02-02'
    insert student select 4, 'DD', 90, '2007-02-02'
    insert student select 5, 'EE', 84, '2007-02-02'select * from student as tmp
    where 
    (select count(*) from student 
     where convert(char(7), rq, 120)=convert(char(7), tmp.rq, 120) and cj>tmp.cj)<3
    order by rq, cj desc--result
    id          name       cj          rq                                                     
    ----------- ---------- ----------- ------------------------------------------------------ 
    3           CC         90          2007-01-02 00:00:00.000
    2           BB         88          2007-01-02 00:00:00.000
    5           EE         70          2007-01-02 00:00:00.0004           DD         90          2007-02-02 00:00:00.000
    5           EE         84          2007-02-02 00:00:00.000
    2           BB         80          2007-02-02 00:00:00.000(6 row(s) affected)