SELECT * FROM (SELECT RY.SFZZ,RY.ID AS RYID,GW.GWBH,GW.GWMC,GW.PYSX,GW.GWLX,GW.GWDJ,GW.BMID,GW.PX,GW.TB,GW.SM,GW.ISDELETE,SYO.ORGCODE,SYO.ORGNAME,SYT.DICTNAME as TYPENAME,SYL.DICTNAME as LIVENAME,UI.USERNAME,UI.LOGINNAME,UI.USERID FROM IEJU.B_T_GWXX GW Inner Join IEJU.S_SYSORG SYO ON GW.BMID = SYO.ORGID Inner Join IEJU.S_SYSDICT SYT ON GW.GWLX = SYT.ID Inner Join IEJU.S_SYSDICT SYL ON GW.GWDJ = SYL.ID LEFT Join IEJU.B_T_GWRY RY ON RY.GWID = GW.GWBH LEFT Join IEJU.S_USERINFO UI ON RY.YHID = UI.USERID) AA  WHERE AA.ISDELETE=1Distinct(GW.GWBH)这个字段,其他的字段都需要,怎么办!!!!

解决方案 »

  1.   

    "其他的字段都需要",那你按什么选择数据呢?
    比如说下面的数据,gwbh都是1,你要求显示哪条记录呢:
    gwbh GWMC PYSX
    1     a     a
    1     b     b 
    1     c     c
    还是任意?
      

  2.   

    如果按一个gwmc排序的话,可以这样实现
    select aa.* from
    (select RY.SFZZ,RY.ID AS RYID,GW.GWBH,...., 
    row_number() over (partition by gwbh order by gwmc) cnt --按gwbh分组
    ....--其他连接条件
    )AA 
    WHERE AA.ISDELETE=1
      and AA.cnt = 1; --取组的第一条记录
      

  3.   

    岗位编号是GUID类型的哈。 不会重复
      

  4.   

    Mission is impossible,兄弟。