以下是根据要求编写查询创建的条件。
患者1(Abc)的访问日期应通过对患者的“筛查”访问来计算。
例如,如果患者(Abc)在2019年3月23日进行了探访,则显示了最小日期(2019年3月22日)和最大日期(2019年3月25日)。
在VisitWindow中,我将VisitWindowId链接到表VisitEntry中的VisitId。
因此,如果您看到visitWindowId,则可以看到我提到了MinDays(1)和MaxDays(2),这将使用VisitName的VisitDate计算为“筛选”。
例如,我期望查询或编写查询以给出以下结果。
我写了所需的查询来获得结果
表-VisitEntry
--------------------
RecordId VisitId VisitName VisitDate PatientId PatientName
1 1 Screening 23/Mar/2019 100 Abc
2 2 Visit 1 Date 23/Mar/2019 100 Abc
表格-VisitWindow
-------------------
RecordId VisitId VisitWindowId MinDays MaxDays
1 2 1 1 2
期望的QueryResult
--------------------
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
答案 0 :(得分:0)
您没有提到数据库,所以我给您2。
SQL Server:
$locationData = [
'purchase_location' => 0
];
$itemData = [];
foreach($queryResults as $result) {
$locationData['purchase_location'] += $result['totalPurchase'];
$itemData['purchase_item'] = $result['totalPurchase'];
}
Oracle:
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