Уникальные значения одного столбца в таблице с несколькими столбцами в oracle sql

Я хочу создать новую таблицу со столбцами из другой таблицы. Следует выбирать только те строки, где столбец x имеет уникальные значения. Столбец x должен состоять из обрезанных значений столбца a .

Это мой код:

 create table nodupli as select distinct(regexp_replace(a,'[[:space:]]|[[:punct:]]','')) as x, B, C, D from table1 order by x; 

Как включить только те строки с уникальными значениями в столбце x?

Вы можете присоединиться к этому запросу с другим, который возвращает только уникальные значения x , например

 select x from table1 group by x having count(*) = 1 

Итоговый запрос будет

 create table nodupli as select regexp_replace(t1.a,'[[:space:]]|[[:punct:]]','') as x, t1.B, t1.C, t1.D from table1 t1 join ( select regexp_replace(a,'[[:space:]]|[[:punct:]]','') as x from table1 group by regexp_replace(a,'[[:space:]]|[[:punct:]]','') having count(*) = 1 ) t2 on regexp_replace(t1.a,'[[:space:]]|[[:punct:]]','') = t2.x order by x; 

редактировать

Предыдущее условие join было неправильным, потому что x является псевдонимом, заданным вычисляемому столбцу в select , так что это как-то на уровне презентации. Фактическое имя столбца все еще является исходным, и вам нужно использовать это в условии join . Я отредактировал мой запрос, который теперь должен быть правильным.