做一个x in(从tbl.A中选择y)

时间:2015-08-21 14:42:07

标签: sql teradata

我有两张桌子。

tbl.A列出了医生及其患者(如将该医生作为初级保健医生的患者)。没有患者分配超过1名医生。

 Doctor       Patients 
   x             a
   x             b
   y             c
   y             d

tb.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

1 个答案:

答案 0 :(得分:4)

您可能需要外部联接:

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