也就是在POSID字段中前两位为(如01,0,03)的记录中且按PRI值为大的记录选择出来.

解决方案 »

  1.   

    select a.TID,a.wid,a.POSID,a.OPE,b.pri  from tb a 
    inner join (select left(posid,2) as posid,max(pri) pri from tb group by left(posid,2)b
    on left(a.posid)=b.posid
      

  2.   

    select TID,wid,POSID,OPE,pri  
    from tb a
    where not exists(select * from tb where posid=a.postid and pri>a.pri)
      

  3.   

    少了一个leftselect TID,wid,POSID,OPE,pri  
    from tb a
    where not exists(select * from tb where left(posid)=left(a.posid) and pri>a.pri)
      

  4.   

    to hdhai9451: 测试不是我要的结果.不过还是要谢谢你.我再试下面的.
      

  5.   

    lsxaa(小李铅笔刀),好象接近,不过还是有重复的,如left(posid,2)='03'的,它们的PRI都为-1.谢谢,已经有很大进步了.
      

  6.   

    select distinct TID,wid,POSID,OPE,pri  
    from tb a
    where not exists(select * from tb where left(posid)=left(a.posid) and pri>a.pri)
      

  7.   

    用这个 distinct 没用的.
      

  8.   

    OK,重新修改之后如下才可能.
    select * from tk a,
    ( select wid=min(wid) from tk b where 
      not exists(select * from tk  where left(posid,2)=left(b.posid,2) and pri>b.pri)
      Group by left(posid,2)) C
    where a.wid=c.wid