以下是根据要求编写创建查询的条件。
访问 1 患者的日期 (ABC( 应根据患者的"筛查"访问计算。
例如,如果患者 (ABC( 在 2019 年 3 月 23 日访问过,则使用最小日期 (22/Mar/2019( 和 MaxDate (25/Mar/2019(。
在 VisitWindow 中,我将 VisitWindowId 链接到 VisitEntry 表中的 VisitId。
因此,如果您看到 visitWindowId,您可以看到我提到了 MinDays (1( 和 MaxDays(2(,这是使用 VisitDate 计算的,因为 VisitName 等于"筛选"。
例如,我希望查询或编写查询给出以下结果。
我开始编写所需的查询以获得结果
表 - 访问条目
--------------------
RecordId VisitId VisitName VisitDate PatientId PatientName
1 1 Screening 23/Mar/2019 100 Abc
2 2 Visit 1 Date 23/Mar/2019 100 Abc
表 - 访问窗口
-------------------
RecordId VisitId VisitWindowId MinDays MaxDays
1 2 1 1 2
预期查询结果
--------------------
RecordId VisitId VisitName VisitDate PatientId MinDate MaxDate
1 1 Screening 23/Mar/2019 100 NUll Null
2 2 Visit 1 Date 23/Mar/2019 100 22/Mar/2019 25/Mar/2019
你没有提到数据库,所以我给你 2。
SQL Server:
SELECT ve.RecordID, ve.VisitID, ve.VisitName, ve.VisitDate, ve.PatientID, ve.PatientName,
dateadd(d, sd.VisitDate, -1 * vw.MinDays) MinDate,
dateadd(d, sd.VisitDate, vw.MaxDays) MaxDate
FROM VisitEntry ve
LEFT JOIN VisitEntry sd ON (ve.PatientId=sd.PatientId AND sd.VisitName='Screening')
LEFT JOIN VisitWindow vw ON ve.VisitID=vw.VisitID
神谕:
SELECT ve.RecordID, ve.VisitID, ve.VisitName, ve.VisitDate, ve.PatientID, ve.PatientName,
sd.VisitDate - vw.MinDays MinDate,
sd.VisitDate + vw.MaxDays MaxDate
FROM VisitEntry ve
LEFT JOIN VisitEntry sd ON (ve.PatientId=sd.PatientId AND sd.VisitName='Screening')
LEFT JOIN VisitWindow vw ON ve.VisitID=vw.VisitID