寻找具有良好血压控制的患者

Gra*_*hiu 5 sql

我有这样的结果数据库

patient integer
rdate date
rvalue integer
rtype vchar
Run Code Online (Sandbox Code Playgroud)

患者在给定日期进行(0 ... n)血压测量.我需要找到那些上次就诊的患者包括血压测量,并且在那次就诊时舒张压<90且收缩压<140.

我可以像这样检查最后一次只检查收缩压测量值

select patient, max(rdate) as maxdate 
from results 
where rtype = 'systolic' and rvalue > 0 
group by patient
Run Code Online (Sandbox Code Playgroud)

如何选择min(rvalue)<140?

JNK*_*JNK 2

尝试:

select r.patient, max(r.rdate) as maxdate 
FROM results as R
INNER JOIN results as R2 ON r2.Patient=r.patient AND r.rdate=r2.rdate
WHERE r.type='systolic' and r.rvalue BETWEEN 0 and 140
AND r2.type='diastolic' and r2.rvalue BETWEEN 0 and 90
GROUP BY r.patient
Run Code Online (Sandbox Code Playgroud)

这是自连接,并且只会返回同一患者在同一日期有两种类型的血压测量值的行(基于连接标准)。