【发布时间】:2021-04-07 09:35:23
【问题描述】:
我需要返回存在重要值的患者 ID 的最近(最大)日期 - 这不仅仅是最大值。对于 Patient_ID 的遇到日期,它必须具有相应的生命值。我也只想要生命体征值 '' 和日期 >= '2020-01-01' 和 vital_ID = 232268 的遭遇。
遭遇(enc)
| Patient_ID | Encounter_ID | Date |
|---|---|---|
| 1 | 11 | 1/4/2020 |
| 1 | 12 | 1/15/2020 |
| 1 | 13 | 3/6/2020 |
| 2 | 14 | 1/12/2020 |
| 3 | 15 | 3/16/2020 |
| 3 | 16 | 4/19/2020 |
| 4 | 17 | 6/2/2020 |
| 4 | 18 | 6/12/2020 |
| 4 | 19 | 9/1/2020 |
生命体征
| Encounter_ID | Vital_ID | Value |
|---|---|---|
| 11 | 232268 | 4.8 |
| 12 | 232268 | 4.6 |
| 14 | 232268 | 3.1 |
| 16 | 232268 | 3.2 |
| 17 | 232268 | 4.1 |
| 18 | 232268 | 4.7 |
期望的结果
| Patient_ID | Encounter_ID | Date | Value |
|---|---|---|---|
| 1 | 12 | 3/6/2020 | 4.6 |
| 2 | 14 | 1/12/2020 | 3.1 |
| 3 | 16 | 4/19/2020 | 3.2 |
| 4 | 18 | 9/1/2020 | 4.7 |
我试过了,但它只返回了 vitals_encounter_ID IF it = max(date) for the patient_ID 1 一起,因为没有在遇到_ID 13 上进行生命体征:
select v.encounterID, e.patientID, e.date, v.value, v.vitalID
from vitals v
left join enc e on
e.encounterID = v.encounterID and
v.vitalID = 232268 and
v.value <> '' and
e.date = (select max(date) from enc where patientID=e.patientID)
where e.date >= '2020-01-01'
Cognos 8。我是新手,所以请不要把我活生生吃掉......
【问题讨论】:
标签: sql subquery greatest-n-per-group cognos cognos-8