好久没搞数据库了,我有一张表,其中有三个字段如下:
用户  字段B  字段C
要统计字段B和字段C值都相同的不同用户(同个用户的话,允许字段B和字段C值相同),这个SQL语句怎么写啊,谢啦。

解决方案 »

  1.   

    好久没上CSDN,现在怎么变得这么冷清了
      

  2.   

    select 用户 from table t where t.A = t.B group by t.用户
      

  3.   

    select 用户 from test t where t.字段b = t.字段c group by 用户-----------用户可能有重复的,提重了一下。
      

  4.   

    select distinct 用户 from test t where t.字段b = t.字段c
      

  5.   

    哦,可能我没描述清楚,比如:
    用户  字段B 字段C
    aa    1b   1c
    aa    1b   1c
    bb    2b   2c
    cc    2b   2c
    如aa用户有两行记录,字段B和字段C值都相同没问题,但bb和cc用户的字段B和字段C值都相同不行
    我想要统计出来的结果就是bb和cc用户啊
      

  6.   

    SELECT COUNT(str1)OVER(PARTITION BY str2,str3) AS RN,TEST.*  FROM TABLE
      

  7.   

    with test as (
    select 'AA' as str1,'1B' as str2,'1C' as str3 from dual
    union all
    select 'AA' as str1,'1B' as str2,'1C' as str3 from dual
    union all
    select 'BB' as str1,'2B' as str2,'2C' as str3 from dual
    union all
    select 'CC' as str1,'2B' as str2,'2C' as str3 from dual
    )
    SELECT STR1,STR2,STR3 FROM (
    SELECT COUNT(str1)OVER(PARTITION BY str1,str2,str3 ) AS RN,TEST.* FROM TEST) WHERE RN =1 
      

  8.   

    谢谢restbely和楼上的几位兄弟,搞定~~我想统计不同的用户不允许存在字段B和字段C相同的行,下面这个才是我想要的结果
    SELECT distinct STR2,STR3,rn FROM (
    SELECT COUNT(distinct str1)OVER(PARTITION BY str2,str3 ) AS RN,TEST.* FROM TEST) WHERE RN>1