表A
金额  销售时间 所属类别 表B
类别标示    类别名称
表A中之存放了销售记录,记忆所属类别标示(如1,2,3,4之类)
表B中存放类别标示,类别名称问题。。
如何查询出各类别对应的销售金额最大的N条记录??
谢谢

解决方案 »

  1.   

    参考:查出每个班级的总分前两名的学生 
    生信息表:students  学生编号    学生姓名     学生所班级 id     name           class 001     学生一        class_01 002         学生二        class_01 003         学生三        class_01 004         学生四        class_02 005         学生五        class_02 006         学生六        class_02  
    成绩表:results 学生编号    科目名称        分数  id         course_name      course_score 001          语文            80 
    002          语文            80 
    003          语文            83 
    004          语文            80 
    005          语文            80 
    006          语文            60 
    001          数学            80 
    002          数学            80 
    003          数学            60 
    004          数学            80 
    005          数学            80 
    006          数学            82 
    001          外语            80 
    002          外语            80 
    003          外语            60 
    004          外语            80 
    005          外语            80 
    006          外语            75 
    怎么用sql server 查出每个班级的总分前两名的学生? 
    create table students(id varchar(10),cname varchar(10),class varchar(10))
    insert into students values('001','学生一','class_01') 
    insert into students values('002','学生二','class_01') 
    insert into students values('003','学生三','class_01') 
    insert into students values('004','学生四','class_02') 
    insert into students values('005','学生五','class_02') 
    insert into students values('006','学生六','class_02')   
    create table results(id varchar(10),course_name varchar(10),course_score int)
    insert into results values('001','语文',80) 
    insert into results values('002','语文',80) 
    insert into results values('003','语文',83) 
    insert into results values('004','语文',80) 
    insert into results values('005','语文',80) 
    insert into results values('006','语文',60) 
    insert into results values('001','数学',80) 
    insert into results values('002','数学',80) 
    insert into results values('003','数学',60) 
    insert into results values('004','数学',80) 
    insert into results values('005','数学',80) 
    insert into results values('006','数学',82) 
    insert into results values('001','外语',80) 
    insert into results values('002','外语',80) 
    insert into results values('003','外语',60) 
    insert into results values('004','外语',80) 
    insert into results values('005','外语',80) 
    insert into results values('006','外语',75) 
    goselect m.* from (select a.class , a.id , course_score = sum(b.course_score) from students a,results b where a.id = b.id group by a.class , a.id) m 
    where 2 > (select count(*) from (select a.class , a.id , course_score = sum(b.course_score) from students a,results b where a.id = b.id group by a.class , a.id) n where n.class = m.class and n.course_score > m.course_score ) 
    order by m.class , m.course_score desc , m.iddrop table students,results/*
    class      id         course_score 
    ---------- ---------- ------------ 
    class_01   001        240
    class_01   002        240
    class_02   004        240
    class_02   005        240(所影响的行数为 4 行)
    */
      

  2.   

    select top N  b.*,count(1) as cnt
    from tableb b,tablea a
    where a.所属类别  = b.类别标示
    group by b.类别标示, 类别名称
    order by cnt