Сначала я настроил некоторые тестовые данные, используя:
create table t4
as select * from scott.emp
alter table t4 add (isenrolled number(10))
update t4
set isenrolled = 0
insert into t4
(select emp.*, 1
from scott.emp)
На данный момент в таблице t4 теперь есть две записи для каждого сотрудника (одна, где isenrolled = 0 и одна, где isenrolled = 1) ![alt text](https://i.stack.imgur.com/K8wzS.jpg)
поэтому я изменяю данные ALLEN, чтобы он "отказался"
delete from t4
where ename = 'ALLEN'
and isenrolled = 1
Этот запрос затем показывает данные для ALLEN (1 запись) и SMITH (2 записи)
select *
from t4
where ename IN ('ALLEN', 'SMITH')
order by ename
![alt text](https://i.stack.imgur.com/DMuti.jpg)
Затем, чтобы показать только одну запись на сотрудника (в данном случае ограничено ALLEN и SMITH), вы можете использовать:
select t.*
from t4 t
where isenrolled = (select MAX(isenrolled)
from t4
where t4.empno = t.empno)
and ename IN ('ALLEN', 'SMITH')
![alt text](https://i.stack.imgur.com/8xlNl.jpg)
Надеюсь, это поможет