我有两个名为[DrugPrescriptionEdition]和[PrescriptionDoseDetail]的表,现在,我使用以下查询加入这两个表并获取结果集。
select * from DrugPrescription dp where id in(
SELECT distinct dpe.template
FROM [DrugPrescriptionEdition] dpe
join PrescriptionDoseDetail pdd on pdd.prescription = dpe.id
where doseEnd_endDate is NULL and doseEnd_doseEndType =1
)
但现在我想记录只包含,(1,2)数据源的组合' column和prescription.id应该是相同的。
示例:喜欢记录{prescriptionID = 4并且包含,(1,2)}。我不会考虑,只有1或2包含记录。
需要一些专家帮助才能将此条件添加到我的上述查询中并进行修改。
预期结果:我需要使用这个新条件过滤掉上面的查询结果。
答案 0 :(得分:1)
让我假设您的记录在一张表中。这是一种方法:
select t.*
from t
where (t.dataSource = 1 and
exists (select 1
from t t2
where t2. prescriptionid = t.prescriptionid and
t2.dataSource = 2
)
) or
(t.dataSource = 2 and
exists (select 1
from t t2
where t2.prescriptionid = t.prescriptionid and
t2.dataSource = 2
)
);
目前还不清楚是否允许任何其他数据源。如果不是,请添加:
and
not exists (select 1
from t t3
where t3.prescriptionid = t.prescriptionid and
t3.dataSource not in (1, 2)
)