Я понимаю, что вам нужны записи, для которых все значения 1
, 2
и 3
доступны для данного (a1, a2, a3, a4)
кортежа.
Вот один из способов сделать это, присоединившись к таблица с совокупным подзапросом:
select t.*
from mytable t
inner join (
select a1, a2, a3, a4
from mytable t1
where a6 in (1, 2, 3)
group by a1, a2, a3, a4
having count(distinct a6) = 3
) g
on g.a1 = t.a1
and g.a2 = t.a2
and g.a3 = t.a3
and g.a4 = t.a4
Также можно выполнить фильтрацию с помощью коррелированного подзапроса:
select t.*
from mytable t
where (
select count(distinct a6)
from mytable t1
where t1.a1 = t.a1 and t1.a2 = t.a2 and t1.a3 = t.a3 and and t1.a4 = t.a4
) = 3