问题描述
我有一个看起来像下面的表
我必须为每个PatientID每隔一秒选择一条记录,以得到以下结果(我的上一次查询返回了该结果)
然后我必须选择日期最早的记录,该日期将是以下日期(这是我想要的最终结果)
到目前为止我所做的:我有一个CTE,可以获取我需要的所有数据
WITH cte
AS
(
SELECT visit.PatientTreatmentVisitID,mat.PatientMatchID,pat.PatientID,visit.RegimenDate AS VisitDate,ROW_NUMBER() OVER(PARTITION BY mat.PatientMatchID,pat.PatientID ORDER BY visit.VisitDate ASC) AS RowNumber
FROM tblPatient pat INNER JOIN tblPatientMatch mat ON mat.PatientID = pat.PatientID
LEFT JOIN tblPatientTreatmentVisit visit ON visit.PatientID = pat.PatientID
)
然后我针对CTE编写查询,但到目前为止,我只能为每个PatientID返回第二行
SELECT *
FROM
(
SELECT PatientTreatmentVisitID,PatientMatchID,PatientID,VisitDate,RowNumber FROM cte
) as X
WHERE RowNumber = 2
如何返回仅具有最早日期的记录?也许我可以在某个地方包含MIN()函数?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)