表二中的“录取人数”一个是"2",一个是"5",到后面的结果当中的“录取人数”却是一个"5",一个"6"……
Sorry,偶今天身体状况不佳.

解决方案 »

  1.   

    对,写错了
    表1
    学号     层次        专业      班级      分数
    001      专升本      计算机     A        160
    002      专升本      计算机     A        190
    003      专升本      计算机     A        200
    004      专升本      计算机     A        210
    005      专升本      计算机     A        220
    006      专升本      计算机     A        180
    007      专升本      法  学     A        180
    008      专升本      法  学     A        190
    009      专升本      法  学     A        210
    010      专升本      法  学     A        210
    011      专升本      法  学     A        210
    012      专升本      法  学     A        190
    013      专升本      法  学     A        220
    014      专升本      法  学     A        230
    015      专升本      法  学     A        240
    ...........................................
    表 2
    层次        专业      班级     录取人数
    专升本      计算机     A          5
    专升本      法  学     A          6
    根据表2中的相应的层次、专业、班级下的录取人数得到表一中相应的层次、专业、班级下的录取分数
    例如:
    层次        专业      班级     录取人数 录取分数
    专升本      计算机     A          5       180
    专升本      法  学     A          6       210
    .............................................相应的层次、专业、班级下分数从高到低排序取第(录取人数)记录的分数
    例如:
    表二中层次为专升本、专业为计算机、班级为 A班的录取人数是5人
    相应的从表一中取的录取分数线为180
      

  2.   

    select 层次 ,专业, 班级,录取人数,(select max(分数) from 表1 a where b.专业=专业 and b.班级=班级 and (select count(1) from ab where 分数>=a.分数 and a.专业=专业 and a.班级=班级 )>=b.录取人数 ) as 分数线 from 表2 b 
      

  3.   

    你要看分数的话不会出现上述问题的,这就是为什么用MAX 不用MIN的原因了
      

  4.   

    现在不用管录取人数问题,只要确定分数线就可以了
    to  duoluohuifeng(堕落回风) select 层次 ,专业, 班级,录取人数,(select max(分数) from 表1 a where b.专业=专业 and b.班级=班级 and (select count(1) from ab where 分数>=a.分数 and a.专业=专业 and a.班级=班级 )>=b.录取人数 ) as 分数线 from 表2 b 
    这样写可以吗?
      

  5.   

    select distinct b.*,a.录取分数 from (select 班级,层次,专业,min(分数)录取分数 from 表a
    group by  班级,层次,专业)  a,表2 b
    where a.班级=b.班级 and a.层次=b.层次 and a.专业=b.专业
      

  6.   

    select b.层次,b.专业,b.班级,b.录取人数,c.分数 as 录取分数
    from 表2 b,(select distinct a.层次,a.专业,a.班级,a.分数 as ,sum(case when a.分数>=d.分数 then 1 else 0 end ) as count1 from 表1 a,表2 d where a.层次=d.层次 and a.专业=d.专业 and a.班级=d.班级 group by b.层次,b.专业,b.班级,a.分数 ) c
    where b.层次=c.层次 and b.专业=c.专业 and b.班级=c.班级 and b.录取人数=c.count1
      

  7.   

    to ltcxh0826(沉默是金)
     表2中是没有分数这个字段的
     (select distinct a.层次,a.专业,a.班级,a.分数 as ,sum(case when a.分数>=d.分数 then 1 else 0 end ) as count1 from 表1 a,表2 d where a.层次=d.层次 and a.专业=d.专业 and a.班级=d.班级 group by b.层次,b.专业,b.班级,a.分数 ) 
      

  8.   

    [create] table 表1
    (学号 varchar(20),层次 varchar(20),专业 varchar(20),班级 varchar(20),分数 int)
    insert into 表1
    select '001','专升本','计算机','A',160 [union] all
    select '002','专升本','计算机','A',190 [union] all
    select '003','专升本','计算机','A',200 [union] all
    select '004','专升本','计算机','A',210 [union] all
    select '005','专升本','计算机','A',220 [union] all
    select '006','专升本','计算机','A',180 [union] all
    select '007','专升本','法学','A',180 [union] all
    select '008','专升本','法学','A',190 [union] all
    select '009','专升本','法学','A',210 [union] all
    select '010','专升本','法学','A',210 [union] all
    select '011','专升本','法学','A',210 [union] all
    select '012','专升本','法学','A',190 [union] all
    select '013','专升本','法学','A',220 [union] all
    select '014','专升本','法学','A',230 [union] all
    select '015','专升本','法学','A',240[create] table 表2
    (层次 varchar(20),专业 varchar(20),班级 varchar(20),录取人数 int)
    insert into 表2
    select '专升本','计算机','A',5 [union] all
    select '专升本','法学','A',6 select * from 表2select 层次,专业,班级,count(*) as 录取人数, 
    min(分数) as 分数
    from
    (
    select * from 表1 a where
     (select count(1) from 表1 b where a.专业=b.专业 and a.分数<b.分数)<
    (select 录取人数 from 表2 c where c.专业=a.专业)
    ) b
    group by 专业,层次,班级drop table 表2
    drop table 表1 层次          专业                 班级                录取人数    分数          
    ------------ -------------------- -------------------- ----------- ----------- 
    专升本       法学                  A                    6           210
    专升本       计算机                A                    5           180(所影响的行数为 2 行)