Col1;Col2;Col3
12345;01;Y
12345;02;Y
12345;03;Y
22222;01;Y
22222;02;Y
22222;03;N
33333;01;N
44444;01;Y
Нужна помощь в написании SQL-запроса, чтобы найти все записи со значением = 'Y' на основе col1.For. Выбор вывода. Col1 должен давать выходные данные как 12345 и 44444 [не 22222 и 33333, так как col3 содержит "N" для них]
Большое спасибо за ваше время
Я думаю, вам нужен col1
где все значения col3 должны быть Y
select col1
from demo
group by col1
having count(*) = sum(Col3 = 'Y')
Или, если может быть только два возможных значения для col3 как Y/N
, то вы можете упростить, having
положение в
having sum(Col3 = 'N') = 0
true
чтобы быть 1 и false
чтобы быть 0, то есть это может быть расширен как sum(case when Col3 = 'Y' then 1 else 0 end)
мое решение с использованием разницы
select distinct col1 from demo where col1 not in
(select col1 from demo where col3='N')
Один простой подход использует условную агрегацию:
SELECT Col1
FROM yourTable
GROUP BY Col1
HAVING MAX(Col3) = MIN(Col3) AND MAX(Col3) = 'Y';
Мое решение:
select distinct col1
from mytable
where col3='Y'
and col1 not in (select distinct col1 from mytable where col3='N')
GROUP BY