这是与此相关的问题,但使用 EXISTS 而不是 IN
SELECT distinct Patient.patientid
FROM Patient P
JOIN patientICD pICD
ON P.patientid = pICD.patientid
AND P.admissiondate = pICD.admissiondate
AND P.dischargedate = pICD.dischargedate
JOIN tblICD
ON pICD.primarycode = tblICD.ICD_ID
WHERE tblICD.descrip LIKE N'%diabetes%'
AND patient.patientID not in (
SELECT distinct Patient.patientid
FROM Patient P
JOIN patientICD pICD
ON P.patientid = pICD.patientid
AND P.admissiondate = pICD.admissiondate
AND P.dischargedate = pICD.dischargedate
JOIN tblICD ON pICD.primarycode = tblICD.ICD_ID
WHERE tblICD.icd_id =N'25000'
)
此查询工作正常,但是当我尝试将另一个字段添加到我必须使用的选择表达式时WHERE EXISTS
,以下查询返回 0 结果,而上述查询返回 130。我正在尝试将 tblicd.icd_id 字段添加到结果中从第一个查询设置,我做错了什么。
SELECT DISTINCT Patient.patientid, tblicd.icd_id
FROM Patient
INNER JOIN patientICD
ON Patient.patientid = patientICD.patientid
AND Patient.admissiondate = patientICD.admissiondate
AND Patient.dischargedate = patientICD.dischargedate
INNER JOIN tblICD
ON patientICD.primarycode = tblICD.ICD_ID
WHERE tblICD.descrip LIKE N'%TextOfNote%'
and not exists (
SELECT DISTINCT Patient.patientid, tblicd.icd_id
FROM Patient
INNER JOIN patientICD
ON Patient.patientid = patientICD.patientid
AND Patient.admissiondate = patientICD.admissiondate
AND Patient.dischargedate = patientICD.dischargedate
INNER JOIN tblICD
ON patientICD.primarycode = tblICD.ICD_ID
WHERE tblICD.icd_id = N'25000'
)