Oracle 12c - выберите записи, которые имеют последовательности - PullRequest
0 голосов
/ 22 октября 2018

У меня есть таблица со следующими столбцами:

employee_id number (PK);
unique_emp_id varchar2(20);
emp_uid varchar2(20);

Я хочу выбрать все дубликаты emp_uid, где хотя бы один unique_emp_id равен like '%-%' и один not like '%-%'.Как я могу это сделать?

Пример данных:

emp_uid   unique_emp_id
--------- -------------
12345.12  12345.12
12345.12  12345.12-1
12345.12  12345.12-2
12345.34  12345.34-1
12345.34  12345.34-2

Данные результатов:

emp_uid   unique_emp_id
--------  -------------
12345.12  12345.12
12345.12  12345.12-1
12345.12  12345.12-2

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Я бы использовал exists:

select t.*
from table t
where exists (select 1 from table t1 where t1.emp_uid = t.emp_uid and t1.unique_emp_id like '%-%') and
      exists (select 1 from table t1 where t1.emp_uid = t.emp_uid and t1.unique_emp_id not like '%-%');
0 голосов
/ 22 октября 2018

Если я правильно понимаю, group by и having решают эту проблему:

select emp_uid
from t
group by emp_uid
having sum(case when unique_emp_id like '%-%' then 1 else 0 end) > 0 and
       sum(case when unique_emp_id not like '%-%' then 1 else 0 end) > 0;
...