我有一张像
这样的表格使用patientid, admissiondate, dischargedate
的复合键。
请注意,patientID 6
的{{1}}为10/21,dischargedate
为10/22。
同样admissiondate
的{{1}}为2/20,patientID 11
为6/14。
dischargedate
可以在数据库中的次数没有限制。
如何获取admissiondate
比之前patientID
大3天或更少天的所有实例的列表? (admissiondate
符合此法案)。多次自我加入是不对的。我有
dischargedate
获取不止一次见过的所有人的列表。如何patientid 6
确保select patientid, p.admissiondate, p.dischargedate
from Patient as p
where patientid in
(
select patientid
from Patient p2
group by patientid
having count(*) > 1
)
order by patientid, admissiondate
在admissionDate
之后的三天内? (来自此示例中的上一行)。
我不能做一个简单的dischargedate
,因为我不担心任何一次访问datediff(dd,admissiondate, dischargedate)
,只是因为NEXT datediff
在前一天的三天之内到来{ {1}}
答案 0 :(得分:4)
;with cte as
(
-- get admission dates by patient in order
select *, ROW_NUMBER() over (partition by PatientID order by AdmissionDate) as AdOrd
from patient
)
-- find the gaps between adjacent admissions
select admissions.patientid, discharges.dischargedate, admissions.admissiondate
from cte admissions
inner join cte discharges on discharges.patientid=admissions.patientid
and discharges.AdOrd = admissions.AdOrd-1
where DATEDIFF(D,discharges.dischargedate,admissions.admissiondate )<=3