我有一个 T-SQL 查询,该查询为我提供了 2010 年最近一次就诊的信息,但不是 dentry 就诊。查询的相关部分是:
AND pv.PatientVisitId IN (
SELECT Max(pv1.PatientVisitID)
FROM PatientVisit pv1
JOIN DoctorFacility df1 ON pv1.FacilityID = df1.DoctorFacilityID
JOIN PatientVisitResource pvr1 ON pv1.PatientVisitId = pvr1.PatientVisitId
JOIN DoctorFacility dfr ON pvr1.ResourceId = dfr.DoctorFacilityId
WHERE pv1.PatientProfileID = pp.PatientProfileID
AND pv1.Visit < '2011-01-01'
AND df1.ListName NOT LIKE '%Dental%'
)
现在,我想扭转这一局面,为仅进行过 dentry 预约的患者获取最近的就诊信息。不过,我一直在这里碰壁。谁能带我到另一边吗? :-)
最佳答案
线索是使用不存在的地方
AND pv.PatientVisitId IN (
SELECT Max(pv1.PatientVisitID)
FROM PatientVisit pv1
JOIN DoctorFacility df1 ON pv1.FacilityID = df1.DoctorFacilityID
JOIN PatientVisitResource pvr1 ON pv1.PatientVisitId = pvr1.PatientVisitId
JOIN DoctorFacility dfr ON pvr1.ResourceId = dfr.DoctorFacilityId
WHERE pv1.PatientProfileID = pp.PatientProfileID
AND pv1.Visit < '2011-01-01'
AND df1.ListName LIKE '%Dental%'
)
and not exists ( Select 1 from PatientVisit pv1
JOIN DoctorFacility df1 ON pv1.FacilityID = df1.DoctorFacilityID
JOIN PatientVisitResource pvr1 ON pv1.PatientVisitId = pvr1.PatientVisitId
JOIN DoctorFacility dfr ON pvr1.ResourceId = dfr.DoctorFacilityId
WHERE pv1.PatientProfileID = pp.PatientProfileID
AND pv1.Visit < '2011-01-01'
AND df1.ListName NOT LIKE '%Dental%'
)
关于SQL - 2010 年仅进行过 dentry 检查的所有患者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4493091/