我有这样的结果数据库
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?
尝试:
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)
这是自连接,并且只会返回同一患者在同一日期有两种类型的血压测量值的行(基于连接标准)。