做一个 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
我有两张桌子。
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