一個selfjoin我有一個visits
表看起來像這樣:選擇的第一個孩子記錄在TSQL
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
所以,此查詢工作正常,但它運行太慢了 - 我懷疑這是因爲子查詢。是否有可能將其重寫爲聯接查詢?