Идея заключается в том
(1) Выберите коды обработки, принадлежащие к пациенту "999999999"
(2) Выберите только записи лечения, код лечения которых соответствует одному из кодов лечения, принадлежащих пациенту «999999999»
(3) Сгруппируйте их по пати ent_id
(4) Используйте инструкцию HAVING и COUNT (DISTINCT), чтобы выбрать только те идентификаторы пациентов, которые имеют одинаковое количество различных кодов лечения, таких как пациент «999999999».
select pt.Patient_ID,count(distinct pt.treatment_code)
from
Patient_treatments pt
inner join
(select distinct treatment_code
from
Patient_treatments pt
where pt.Patient_ID="999999999"
)t1
on t1.treatment_code=pt.treatment_code
where pt.Patient_ID<>"999999999"
group by pt.Patient_ID
having count(distinct pt.treatment_code)=
(select count(distinct treatment_code)
from
Patient_treatments pt
where pt.Patient_ID="999999999"
);
С следующей схеме, только пациент 1 выбран: -
Create table Patient_Treatments
(
Patient_ID varchar(10),
Treatment_code varchar(10)
);
Insert into Patient_Treatments
values
("1","abc"),
("1","def"),
("1","def"),
("1","ghi"),
("2","abc"),
("2","def"),
("2","def"),
("3","ghi"),
("999999999","abc"),
("999999999","def"),
("999999999","ghi"),
("999999999","ghi")
http://sqlfiddle.com/#!9/03a84b
Вы должны изменить свой запрос и включить ваши попытки. –