日期:2014-05-18  浏览次数:20419 次

select 语句
用select   写出 '每个月成绩最好 '的前3名同学名称
student   (id,name,cj,rq)
select   top   3     *   from   student   where   ***********   order   by   cj   desc  
union   all  
select   top   3     *   from   student   where   ***********   order   by   cj   desc  
有没有简单的
用select   一步^_^

------解决方案--------------------

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.000

4 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)