如何编写查询以结合编码获取数据

时间:2018-04-25 08:53:32

标签: sql sql-server database join

我有两个名为[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包含记录。

enter image description here

需要一些专家帮助才能将此条件添加到我的上述查询中并进行修改。

预期结果:我需要使用这个新条件过滤掉上面的查询结果。

enter image description here

1 个答案:

答案 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)
           )