做一个 where x in (select y from tbl.A )

Doing a where x in (select y from tbl.A )

我有两张桌子。

tbl.A 有一份医生和他们的病人的名单(就像那些以该医生为初级保健医生的病人一样)。没有患者被分配超过 1 名医生。

 Doctor       Patients 
   x             a
   x             b
   y             c
   y             d

tbl.B 有一份医生名单和他们在过去一年中会见的所有患者(医生可以会见任何患者,无论该患者是否拥有该医生作为 PCP)

表B:

   Doctor    Date          Saw_Patient
     R        05-01-2015        x
     R        05-01-2015        y
     S        02-05-2015        g
     S        06-06-2015        x

我基本上想在 tbl.B 中添加一列来添加一个指示符,表明医生是否是该患者的 PCP

Doctor    Patient     PCP of Patient
  A          z             Yes
  A          x             No
  B          j             Yes
  B          i             Yes

我怎样才能轻松做到这一点。这样的事情是可能的还是我遗漏了什么?

select  b.doctor
       ,b.patient
       ,case when b.patient in (select patient from tblA where a.doctor=b.doctor) then 1 else 0 end as PCP
 from         tblA a
 inner join   tblB b
    on a.doctor=b.doctor

您可能需要一个外连接:

SELECT  b.doctor
       ,b.patient
       ,CASE WHEN a.doctor IS NOT NULL THEN 1 ELSE 0 END AS PCP
 FROM        tblB b
 LEFT JOIN   tblA a
    ON a.doctor=b.doctor
   AND a.patient = b.patient