0

私は次のようなテーブルを持っていますここに画像の説明を入力

の複合キーを使用しpatientid, admissiondate, dischargedateます。

10/21 と10/22 があることに注意しpatientID 6てください。dischargedateadmissiondate

2/20 と6/14 のpatientID 11aもあります。 dischargedateadmissiondate

patientIDがデータベースに存在できる 回数に制限はありません。

admissiondateが前回より 3 日以内に増加したすべてのインスタンスのリストを取得するにはどうすればよい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から 3 日以内であることを確認するにはどうすればよいdischargedateですか? (この例の前の行から)。

1回の訪問でdatediff(dd,admissiondate, dischargedate)心配していないので単純なことはできませんが、次は前回の3日以内に来ました.datediffadmissiondatedischargedate

4

1 に答える 1

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
于 2012-08-06T15:18:12.367 に答える