выбор уникальной строки из таблицы - ORACLE - PullRequest
0 голосов
/ 30 ноября 2010

У меня есть сотрудник, у которого есть данные о пособиях. У меня есть поле в таблице с именем isenrolled, если поле равно 1, что означает, что сотрудник зарегистрировался для получения пособия, а если поле равно 0, это означает, что оно не зарегистрировано. Моя проблема в том, что у меня есть несколько записей сотрудника, это означает, что у Скотта есть две записи с isenrolled = 1 и isenrolled = 0. Я хочу выбрать только одну запись SCOTT, где его isenrolled = 1, и отклонить ту, где isenrolled = 0, таким образом я получу только уникальные записи для сотрудников, которые зарегистрировались и которые не зарегистрировались. Как выбрать этих сотрудников? Я попробовал Qry ниже, и он не работает

select * FROM  employee e 
WHERE e.empid not IN( SELECT empid FROM employee  e2
WHERE e2.isenrolled =1)

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Сначала я настроил некоторые тестовые данные, используя:

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

поэтому я изменяю данные 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

Затем, чтобы показать только одну запись на сотрудника (в данном случае ограничено 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

Надеюсь, это поможет

0 голосов
/ 30 ноября 2010

выберите уникального (e.empid) от сотрудника e, где e2.isenrolled = 1

. Это даст вам уникальный список зарегистрированных сотрудников.Это то, что вы хотите получить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...