一个数据表中有a,b,c,d,e,f六个字段,如何统计a,b同时重复,或者c,d同时重复,或者d重复,或者f重复,或者d与f重复的记录一共有多少条呢?

解决方案 »

  1.   

    count + decode不就可以了吗?case什么都可以的。但是看看LZ的说明,好像很有意思,
    “如何统计a,b同时重复,或者c,d同时重复,或者d重复,或者f重复,或者d与f重复的记录一共有多少条呢? ”
    1.
    "a,b同时重复",是说同一条记录的a等于b?还是一条记录的a,b等于另外一条记录的a,b?2.
    "或者d重复",只能说一条记录的d等于其他的纪录的d了吧。结果需要的是一个总和?还是各个重复的值?
    假如有记录满足你的上面的条件的1个以上,要不要重复计算?
      

  2.   

    1。是一条记录的a,b等于另外一条记录的a,b
    2。是一条记录的d等于其他的纪录的d
    3。结果要一个总和
    4。不要重复计算
      

  3.   

    用自己和自己结合就可以了。"如何统计a,b同时重复,或者c,d同时重复,或者d重复,或者f重复,或者d与f重复的记录一共有多少条呢? "
    条件中的"或者d重复,或者f重复,或者d与f重复"不就是重复了吗?
    d与f重复的话,肯定是d重复而且f重复.select t1.*
    from table t1,table t2
    where t1.rid <> t2.rid
    and (
    (t1.a = t2.a and t1.b = t2.b) or (t1.c = t2.c and t1.d = t2.d) or (t1.d = t2.d) or (t1.f = t2.f)
    )类似这样。
      

  4.   

    d和f是相似的两个字段,当时设计的时候有问题,所以有些人在d中维护数据,有些人在f中维护数据,不一定e和f同时有值,所以e和f之间也要比较一下
      

  5.   

    sql差不多就是3楼的样子的,没处理null时的情况
    不知道楼主认为 null 是否需要等于 ''
    这个需要注意下
      

  6.   

    条件中的 "或者d重复,或者f重复,或者d与f重复 "
    这个地方,你写错了,最后是e与f重复.句子的话,基本上就是上面的样子了。有其他条件的话,自己加吧。
      

  7.   

    找出a,b重复的记录SELECT a,b,c,d,e,f
    FROM 
    (SELECT a,b,c,d,e,f,
    Count() over (PARTITION BY a,b) AS cnt
    FROM table1)
    WHERE cnt>=2
    ORDER BY a,b,c,d,e,f
      

  8.   

    这个可以
    select * from table1 where a in (select a from table1 group by a,b having count(1)>1)如果记录多还能优化,先给分,哈哈