我正在嘗試查找哪些患者有5個或更多的預約不在同一天發生,並且在120天內(4個月)期間。 在下面的示例中,符合條件的唯一患者是在四個月內至少有五次約會的患者爲102。該框架是一個滾動框架,所以資格期可以包括向前或向後重疊一整年的數據。查找120天內滾動窗口內有5個或更多預約的患者
我一直在嘗試幾天來創建一個查詢,並找到一個解決方案,但我無法弄清楚。我可以前進或後退,但我無法弄清楚如何獲得涵蓋移動窗口的查詢。所有五項治療預約必須在120週期內存在,以使患者被認爲合格。
我簡單的表稱爲約會:
AppointmenDate PatientID
2015-01-01 101
2015-01-02 101
2015-01-03 101
2015-03-07 101
2015-03-04 101
2015-03-04 102 *
2015-05-04 102 *
2015-06-04 102 *
2015-07-04 102 *
2015-07-05 102 *
2015-11-04 102
2015-11-04 102
2015-12-12 103
結果看起來大致是這樣的(合格的患者名單):
PatientID Qualified
102 yes
我盡力而爲如下:
SELECT Distinct a.PatientID
,Qualified = 'yes'
FROM Appointments a
JOIN Appointments b ON a.PatientID = b.PatientID
AND (b.AppointmenDate < DATEADD(day, 120, a.AppointmenDate)
OR b.AppointmenDate > DATEADD(day, 120, a.AppointmenDate))
WHERE a.AppointmenDate > '2014-12-01'
GROUP BY a.PatientID
,a.AppointmenDate
HAVING COUNT(*) >= 5
order by PatientID
Google,瞭解SQL中的GETDATE()函數以及DATEADD()或DATEDIFF()函數。在WHERE子句中使用它們來創建移動窗口。 –
你嘗試了什麼?請顯示你的努力 – baao
定義「日」。是一天或一天的開始和結束的小時數或實際時間? –