SQL:获取第一个值

时间:2016-01-26 09:59:35

标签: sql greatest-n-per-group hana

我有两张桌子:

患者(ID,名字,姓氏......)

记录(ID,日期,时间,版本)

我想(内部)加入这些表,所以我有患者数据的记录,但是在版本的列中我总是想要为患者记录的第一个值(所以最小的日期和时间依赖于对病人(id))。我尝试使用子查询,但HANA在子查询中不允许使用ORDER-BY或LIMIT子句。

如何使用SQL实现此功能? (HANA SQL)

亲切的问候和提前谢谢。

1 个答案:

答案 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。