select * from (select *,rn=row_number()over(partition by DID order by PFever desc
from 专家表) a inner join MemberBase b on a.MBID=b.MBID  where a.rn<=3

解决方案 »

  1.   

    1楼
    rn=row_number() 
    这是什么意思 
    没这个函数
      

  2.   


    select * from 
    (
    select * ,ROW_NUMBER ()over(partition by did order by meid) 名次
     from expert)  名次<=3
      

  3.   


    select * from (select *,row_number() over(partition by DID order by PFever) rank from (select M.*,E.DID部门,E.PFever热度 from MemberBase M join Expert E on M.MBID=E.MBID) T) T2
    where rank<=3
      

  4.   

    sql2005新增的函数
    用于排序的
      

  5.   

    row_number()函数
    2000没有
    有等效的SQL吗
      

  6.   

    ROW_NUMBER ()over mssql2005的
      

  7.   

    2000
    select * from 
    (select  mbid,did,pfever,次数= (select COUNT(*) from expert where did=a.did 
    and pfever<a.pfever)  from expert as a
     ) A where 次数<=3
     
     2005
     select * from 
    (
    select * ,ROW_NUMBER ()over(partition by did order by pfever) 名次
     from expert)  名次<=3
      

  8.   

    select a.*,b.MBName from Expert a , MemberBase b where a.MBID=b.MBID and PFever in (select top 3 PFever from Expert where DID=a.DID order by PFever desc )
      

  9.   

    select a.MBID,a.MBName,b.DID,b.PFever
    from MemberBase a join Expert b on a.MBID = b.MBID
    where (select count(1) from Expert c where DID = b.DID and pfever<a.pfever ) < 3