Давайте предположим, что ваша таблица выглядит следующим образом:
doctor_patients:
doctor_id int,
patient_id int,
visit_date datetime
В этом случае вы можете написать запрос, подобный следующему:
select a.patient_id, b.doctor_id as doctor_1, b.visit_time_max as doctor_1_visit_time, a.doctor_id as doctor_2, max(a.visit_time) as doctor_2_visit_time
from doctor_patients a
inner join
(select patient_id, doctor_id, max(visit_time) as visit_time_max
from doctor_patients
where visit_time < a.visit_time
and patient_id = a.patient_id
and doctor_id = a.doctor_id) b
Вы всегда можете поместить предложение whereв хвостовой части и применить фильтры к таблице "а".Я не уверен, будет ли этот запрос работать как есть, потому что я не пробовал его на SQL.Но я надеюсь, что это даст вам общее представление о том, что вам нужно делать.Могут быть и более эффективные способы сделать это с использованием новейших функций SQL, но это должно помочь вам.Я надеюсь, что это ответ, который вы искали!