本帖最后由 luoyanqun 于 2014-04-13 23:21:26 编辑

解决方案 »

  1.   

    在上面的基础上进行分组统计,选取统计结果为1的那条记录便是:
    WITH A AS (SELECT ROW_NUMBER() OVER(PARTITION BY dxid, dxlxid ORDER BY compid DESC) AS compid_count,
                   dxid,
                   dxlxid,
                   compid
              FROM mytest)
    SELECT A.compid_count, A.dxid, A.dxlxid, A.compid
      FROM A,
           (SELECT compid_count, COUNT(*) AS num
              FROM A
             GROUP BY compid_count) B
     WHERE A.compid_count = B.compid_count
       AND B.num = 1;
      

  2.   

    with mytest as(
    select 1 DXID,5069 DXLXID,1300 COMPID from dual union all
    select 2 DXID,5069 DXLXID,1300 COMPID from dual union all
    select 3 DXID,5069 DXLXID,1300 COMPID from dual union all
    select 4 DXID,5069 DXLXID,1400 COMPID from dual union all
    select 5 DXID,5069 DXLXID,1500 COMPID from dual union all
    select 6 DXID,5069 DXLXID,1600 COMPID from dual union all
    select 7 DXID,5069 DXLXID,1700 COMPID from dual union all
    select 8 DXID,5069 DXLXID,1800 COMPID from dual union all
    select 6 DXID,5069 DXLXID,1200 COMPID from dual union all
    select 6 DXID,5069 DXLXID,1500 COMPID from dual union all
    select 8 DXID,5069 DXLXID,1700 COMPID from dual )
    select *
      from mytest
     where dxid || dxlxid in (SELECT dxid || dxlxid
                                from mytest
                               group by dxid, dxlxid
                              having count(1) = 1)