想到一个方法 
SELECT COUNT(DISTINCT (A.PRICE_PLAN_ID||'+'||+A.RE_ID)) A FROM IB_ONE_OFF_CHARGE_RULE 
先试试 不知道还有更好的没 不想再java或者js中处理

解决方案 »

  1.   

    想到一个放法
    SELECT COUNT(DISTINCT (A.PRICE_PLAN_ID||'+'||+A.RE_ID)) A FROM IB_ONE_OFF_CHARGE_RULE 不知道有更好的没不想在程序中处理
      

  2.   

    DISTINCT后,还怎么判断唯一呢?
    这种问题不应该用group by吗?select a||b ,count(*)
    from tab
    group by a||b
    --having count(*)>1 ---not unique
      

  3.   

    SELECT A,B,COUNT(*)
    FROM T 
    GROUP BY A,B
      

  4.   

    支持3楼的,必须用group by 和 having count(1)>1
      

  5.   


    select a,b,count(*) as cou
    from [table] 
    group by a,b
    having count(*)>1
      

  6.   

    select user_id||qrbz ,count(*)
     from askforleave
     group by user_id||qrbz
     having count(*)>1;
      

  7.   

    select user_id,qrbz,count(*) as cou
    from askforleave
    group by user_id,qrbz
    having count(*)>1;
      

  8.   

    为什么要去这样想?A||B唯一 能够推导出:A、B两个字段能够唯一确定一条记录,那么
    A、B分组,去count(*)不就得了:group by a, b
    having count(*)>1;猪!
      

  9.   

    -- 想问题太肤浅,请看下面两个语句的结果:
    select 'abc'||null from dual;
    select null||'abc' from dual;-- 也就是说当“A字段为'abc',b字段为 NULL的时候”,不应该与当“A字段为NULL,b字段为'abc'”的时候相等
      

  10.   

    .....group by a,b having count(1)>1;不就好了e
      

  11.   


    如果是  A:a  b:cde
           A:ac b:de
       这两种情况,按楼主的意思,是属于重复的,不唯一的。
       可按group by A,B 是唯一的
      

  12.   

    本机没有Oracle 没法测试。
    除了group by a||b
    另类点的,试试
    用本表left jion 本表
    select a.id,a.A||a.B,b.id from test a left join b on a.A||a.B=b.A||b.B and a.id!=b.id 那么当b.id为null 时
      

  13.   

    我也来一个:create table tmp_zxf_01(A varchar2(10),B varchar2(10));
    insert into tmp_zxf_01 values('A',null);
    insert into tmp_zxf_01 values('A',null);
    insert into tmp_zxf_01 values(null,'A');
    insert into tmp_zxf_01 values('B',null);
    insert into tmp_zxf_01 values(null,'B');
    insert into tmp_zxf_01 values(null,'B');
    insert into tmp_zxf_01 values('A','B');
    insert into tmp_zxf_01 values('A','B');select a,b
    from (
    select a,b,row_number()over(partition by a,b order by a) rid
    from tmp_zxf_01
    ) where rid>1