我有两张桌子:
患者(ID,名字,姓氏......)
记录(ID,日期,时间,版本)
我想(内部)加入这些表,所以我有患者数据的记录,但是在版本的列中我总是想要为患者记录的第一个值(所以最小的日期和时间依赖于对病人(id))。我尝试使用子查询,但HANA在子查询中不允许使用ORDER-BY或LIMIT子句。
如何使用SQL实现此功能? (HANA SQL)
亲切的问候和提前谢谢。
答案 0 :(得分:1)
HANA支持窗口函数,因此您可以针对选择第一个版本的派生表进行连接:
select p.*, r.id, r.date, r.time, r.version
from patients p
join (
select id, date, time, version, patient_id,
row_number() over (partition by patient_id order by version) as rn
from records
) r on p.id = r.patient_id and r.rn = 1
以上假设records
表的列patient_id
包含该记录所属的患者表的ID。