2014-10-21 1 views
0

Я использую Oracle SQL, и мне нужна помощь с запросом. Надеюсь, это не слишком легко. Я не нашел ответа на него в Google.Выберите включенные значения

У меня есть таблица, которая должна быть агрегирована столбцом ID, а затем выбрать только записи, которые два значения включены в определенную таблицу (и обе из них).

В таблице, например

ID | Value 
1 | Y 
1 | N 
2 | N 
2 | N 
2 | Y 
3 | Y 
3 | Y 
4 | Y 
5 | Y 
5 | N 
5 | Y 
5 | N 

Выходной таблицы должны содержать только идентификаторы, что оба Y и N включены в таблицу значений. Выход:

ID 
1 
2 
5 

ответ

2

Другое решение, что группы по идентификатору и использует HAVING возвращать только те, с> 1 DISTINCT значения:

with v_data(id, value) as (
    select 1, 'Y' from dual union all 
    select 1, 'N' from dual union all 
    select 2, 'Y' from dual) 
select id 
from v_data 
group by id 
having count(distinct value) > 1 
+0

спасибо! Именно этого я и искал. – Omri

0
select distinct a.id 
from your_table a inner join your_table b on a.id = b.id and a.value != b.value; 
Смежные вопросы