select * from
(select id,sew,row_number() over (partition by id order by id) rnb
 from test) t
where t.rnb>1;
另外你的语句是用id作关键字,如果是两个,应该是如下啊
select * from
(select id,sew,row_number() over (partition by id,sew order by id) rnb
 from test) t
where t.rnb>1;

解决方案 »

  1.   

    谢谢了结贴
    以下是在Oracle数据库中操作创建测试源
    Create Table henry_test ( a number,b number);
    Insert Into henry_test values (1,1);
    Insert Into henry_test values (1,2);
    Insert Into henry_test values (1,3);
    Insert Into henry_test values (1,4);
    Insert Into henry_test values (2,1);
    Insert Into henry_test values (2,2);
    Insert Into henry_test values (3,1);
    Insert Into henry_test values (4,1);
    Insert Into henry_test values (4,2);
    Insert Into henry_test values (4,3);
    所有数据
    select * from henry_test;
             A          B
    ---------- ----------
             1          1
             1          2
             1          3
             2          1
             2          2
             1          4
             3          1
             4          1
             4          2
    4 3A相同的记录把重复的列出来
    select * from (select a,b,row_number() over (partition by a order by a) rnb from henry_test) t where t.rnb>1;
             A          B        RNB
    ---------- ---------- ----------
             1          2          2
             1          3          3
             1          4          4
             2          2          2
             4          2          2
             4          3          3
      

  2.   

    可以不要子查询:
    select OC_ORDER_ID from T_ORDER_CASH where rownum<100000 group by OC_ORDER_ID having count(OC_ORDER_ID)>1