SQL | Вытянуть только тех пациентов у кого не было приёма после 2019 года
Есть таблицы [Patient], [Schedule], [SchedulePatient]. Используя такой запрос я хотел вытащить пациентов([Patient]) у которых не было приёма ([Schedule],[SchedulePatient]) после определённого года используя этот запрос:
SELECT Patient.PatientID, Patient.PatientName, Patient.PatientPersonalNumber, Schedule.ScheduleID, Schedule.ScheduleName,Schedule.ScheduleStatusRef, Schedule.ScheduleEndTime, SchedulePatient.ScheduleRef, SchedulePatient.PatientRef
FROM Patient INNER JOIN
SchedulePatient ON Patient.PatientID = SchedulePatient.PatientRef INNER JOIN
Schedule ON SchedulePatient.ScheduleRef = Schedule.ScheduleID where ScheduleEndTime < '2019-01-01'
Есть колонки ScheduleStartTime и ScheduleEndTime соответственно начало и конец приёма. Данные хранят в таком виде 2016-07-05 17:30:00.000. Как правильно построить условия что бы вытащить только пациентов которые ходили на приём до 2019 года?
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Попробуйте так
SELECT DISTINCT
Patient.PatientID,
Patient.PatientName,
Patient.PatientPersonalNumber
FROM
Patient
LEFT JOIN SchedulePatient
INNER JOIN Schedule
ON SchedulePatient.ScheduleRef = Schedule.ScheduleID
AND Schedule.ScheduleEndTime >= '2019-01-01'
ON Patient.PatientID = SchedulePatient.PatientRef
INNER JOIN SchedulePatient AS SchedulePatient1
INNER JOIN Schedule AS Schedule1
ON SchedulePatient1.ScheduleRef = Schedule1.ScheduleID
AND Schedule1.ScheduleEndTime < '2019-01-01'
ON Patient.PatientID = SchedulePatient1.PatientRef
where
SchedulePatient.SchedulePatientID IS NULL