select * from @a a where not exists(select 1 from @a where sclass=a.sclass and sscore>a.sscore and sname='jake') and sname='jack'

解决方案 »

  1.   

    对不起,忘了给出表名了,表的名称为student_score
      

  2.   

    多谢楼上的,但是你写的sql什么结果也得不到
    select * 
    from chunting.dbo.student_score a 
    where not exists(select 1 
    from chunting.dbo.student_score 
    where sclass=a.sclass 
    and sscore>a.sscore 
    and sname='jack') and sname='jack'
      

  3.   

    看样子,这问题还是要靠自己解决。幸运的是我已经想到解决方法了:
    select e.sid,e.sname,max(e.sscore) over (partition by sclass) sscore
    from  (
     select sid,sname,sclass,sscore,
    rank() over(partition by sclass order by sscore desc) as rn
     from   chunting.dbo.student_score
     where  sname='zhang san'
       ) e
    where   e.rn=1
      

  4.   

    select e.sid,e.sname,max(e.sscore) over (partition by sclass) sscore
    from  (
     select sid,sname,sclass,sscore,
    rank() over(partition by sclass order by sscore desc) as rn
     from   chunting.dbo.student_score
     where  sname='zhang san'
       ) e
    where   e.rn=1