我需要返回存在生命值的患者ID的最新(最大(日期-这不仅仅是患者ID的最大遭遇日期,它必须具有相应的生命值。我也只想遇到生命体征值<gt;''和日期>='2020-01-01'和vital_ID=232268。
邂逅(enc(
Patient_ID | Encounter_ID | 日期|
---|---|---|
1 | 11 | 2020年4月1日|
1 | 12 | 2020年1月15日 |
1 | 13 | 2020年3月6日[/tr>|
2 | 14 | 2020年12月1日 |
3 | 15 | 2020年3月16日 |
3 | 16 | 2020年4月19日 |
4 | 17 | 2020年6月2日[/tr>|
4 | 18 | 2020年12月6日[/tr>|
4 | 19 | 9/2020
如果我没有错的话,您需要相关子查询中的两个表:
select v.encounterid, e.patientid, e.date, v.value, v.vitalid
from enc e
inner join vitals v on v.encounterid = e.encounterid
where
v.vitalid = 232268
and v.value <>''
and e.date = (
select max(e1.date)
from enc e1
inner join vitals v1 on v1.encounterid = e1.encounterid
where
e1.patientid = e.patientid
and v1.vitalid = v.vitalid
and v1.value <> ''
and e.date >= '2020-01-01'
)
我不知道Cognos是否支持窗口函数。但如果是这样的话,查询的措辞可以简单得多:
select *
from (
select v.encounterid, e.patientid, e.date, v.value, v.vitalid,
row_number() over(partition by e.patientid order by e.date)
from enc e
inner join vitals v on v.encounterid = e.encounterid
where v.vitalid = 232268 and v.value <> ''
) t
where rn = 1