Ich berechne Rückübernahmequoten von Patienten und muss herausfinden, was Patienten innerhalb eines bestimmten Intervalls und wie oft wieder aufgenommen haben. Ich habe Daten zu, der wie folgt aussieht:Wie finden Sie Datumsintervalle über mehrere Zeilen hinweg, wenn mehr als zwei Zeilen vorhanden sind?
Subscriber_id New_Admission_date
01 2016-06-02
02 2016-06-01
03 2016-06-10
04 2016-06-08
02 2016-06-04
02 2016-06-30
03 2016-06-28
Um herauszufinden, was Patienten innerhalb von 14 Tagen wieder zugelassen haben und was das Intervall zwischen zugibt war, ich habe diesen Code:
select ra.Subscriber_id, DATEDIFF(d,ra.first_ad,ra.last_ad) as interval
from
(
select j.Subscriber_ID,
min(j.New_admission_date) as first_ad,
max (j.New_Admission_Date) as last_ad
from June_inpatients as j
inner join
(select j.Subscriber_ID, count(Subscriber_ID) as total
from June_inpatients as j
group by Subscriber_ID
having count(Subscriber_ID) >1) as r
on j.Subscriber_ID = r.Subscriber_ID
group by j.Subscriber_ID
) as ra
where DATEDIFF(d,ra.first_ad,ra.last_ad) < 15
Das Problem ist, dass einige Patienten , wie Patienten ID 02
in den Beispieldaten, haben mehr als 2 bekannt. Mein Code vermisst alle Zwischenmitteilungen, da er min()
und max()
verwendet. Wie würde ich den Abstand zwischen der ersten Aufnahme und der zweiten Aufnahme eines Patienten finden, wenn drei bekannt sind, und dann den Abstand zwischen der zweiten Aufnahme und der dritten finden?
Welche Version von SQL Server verwenden Sie? Was ist die erwartete Ausgabe Ihres Beispiels? –