Если вы просто хотите, чтобы найти, какой отдел/комбинация супервизора есть несколько мест, то вы можете использовать group by
и having
:
select department, supervisor, count(distinct location) as locations
from employee e
group by department, supervisor
having count(distinct location) > 1;
Если вы хотите, чтобы все данные из строк, которые в любом из этих ведомств, то вы может использовать это как подзапрос, но это означает, что нужно дважды нажать стол. Вы можете использовать аналитический счетчик вместо:
select id, department, supervisor, location
from (
select e.*,
count(distinct location)
over (partition by department, supervisor) locations
from employee e
)
where locations > 1
order by id;
... где id
можно заменить любые поля, которые вы хотите от базовой таблицы или полностью опущен, если вы просто хотите знать, какие места участвуют.
Внутренний запрос получает исходные данные из таблицы и добавляет столбец, который имеет количество (разных) местоположений для отдела/супервизора в этой строке, по всему набору результатов - это аналитическая часть. Внешний запрос затем отфильтровывает те, у которых есть только одно местоположение.
Quick SQL Fiddle demo с готовыми данными.
Это было бы более значимым для вас, если бы вы включили фактический стол и данные образца в вопрос.
... 'WHERE a = b И b = c И a <> d' –
Я имел в виду, что значения в столбце a одинаковы для столбца a, значения для столбца b одинаковы. и т. д. Если у вас есть таблица сотрудников, мне нужны строки, в которых есть сотрудники с тем же отделом, одним и тем же супервизором, в разных местах. – OPost
@OPost Вы должны отредактировать свой вопрос при предоставлении дополнительной информации. Я сделал это для вас. Просмотрите это изменение. –