Если вы используете SQL Server 2005 или более позднюю версию, вы можете использовать EXCEPT
, чтобы исключить группу записей из другого запроса.
Поэтому, в основном, напишите свой больший запрос (покажите ВСЕМ пациентам, у которых былпосетите этот год!), затем ...
...
EXCEPT
SELECT 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%'
Следует иметь в виду, что в обоих запросах необходимо иметь одинаковые столбцы (могут быть НЕКОТОРЫЕ различия,но для наших целей убедитесь, что и первый SELECT
, и запрос EXCEPT
возвращают одинаковые поля).