Таблицы, над которыми я работаю, содержат сведения об их лечении и сведения о приемах, которые называются vwTreatmentPlans и vwAppointmentDetails соответственно.
Моя цель - вернуть только одну строку для каждого кода пациента. Я хочу, чтобы он отображал два столбца: код пациента из таблицы vwTreatmentPlans и назначениеDateTimevalue из таблицы vwAppointmentDetails. САМОЕ ВАЖНОЕ, везде, где есть более одной строки встречи, я хочу, чтобы отображались только последние сведения о встрече, поэтому:
vA.appointmentDateTimevalue Desc
Используя предложения AND, возвращается только одна строка для каждого PatientCode, чего я и хочу. Однако существует проблема отношения «многие к одному» между кодами пациентов из двух таблиц.
SELECT
vT.PatientCode, MAX(vA.appointmentDateTimevalue)
FROM vwTreatmentPlans vT
INNER JOIN vwAppointmentDetails vA ON vT.PatientCode = vA.patientcode
WHERE
vT.PatientCode IN ( 123)
AND
vT.[Current] = 1
AND
vT.Accepted = 1
GROUP BY vT.PatientCode, vA.appointmentDateTimevalue
ORDER by vT.PatientCode, vA.appointmentDateTimevalue Desc
Например, один код пациента возвращает следующий результат:
PatientCode appointmentDateTimevalue
123 2016-02-01 09:10:00.000
123 2016-01-07 09:15:00.000
123 2015-12-31 10:40:00.000
Итак, для приведенного выше примера мне нужен этот вывод:
PatientCode appointmentDateTimevalue
123 2016-02-01 09:10:00.000
Если бы было выбрано более одного кода пациента, я бы хотел:
PatientCode appointmentDateTimevalue
123 2016-02-01 09:10:00.000
456 2016-04-11 15:45:00.000
Я пробовал возиться с вложенными выборками, предложениями и т. д. и, честно говоря, понятия не имел. Я был бы очень признателен за помощь с чем-то, что должно быть разочаровывающе простым!
Спасибо.