У меня есть таблица visits
, которая выглядит следующим образом:
id identity(1,1) not null,
visit_date datetime not null,
patient_id int not null,
flag bit not null
Для каждой записи мне нужно найти совпадающую запись того же времени или раньше, с таким же значением Patient_id иflag
имеет значение 1. Что я сейчас делаю:
select parent.id as parent_id,
(
select top 1
child.id as child_id
from
visits as child
where
child.visit_date <= parent.visit_date
and child.patient_id = parent.patient_id
and child.flag = 1
order by
visit_date desc
) as child_id
from
visits as parent
Итак, этот запрос работает правильно, за исключением того, что он выполняется слишком медленно - я подозреваю, что это из-за подзапроса.Можно ли переписать его как объединенный запрос?