Using the previous example is ok with a table that does not have millions of records, but if you do have a table with lots and lots of records you may have a problem with rollback segments, so how about instead of just removing the duplicates, create a new table with just the records you need in it. Here's how to do it: create table t2 as select col1, col2, etc from (select t.*, row_number() over (partition by cust_seq_nbr order by rowid) rn from t ) where rn = 1