[英]Oracle - With a one to many relationship, select distinct rows based on a min value
这个问题与“一对多关系”中的问题相同,只是基于MIN值返回不同的行 ,但我想看看其他方言,尤其是Oracle中的答案。
从原始描述重新发布:
假设一个病人进行了多次探访。 我想编写一个查询,该查询根据他们最早的访问返回不同的患者行。 例如,考虑以下行。
patients
-------------
id name
1 Bob
2 Jim
3 Mary
visits
-------------
id patient_id visit_date reference_number
1 1 6/29/14 09f3be26
2 1 7/8/14 34c23a9e
3 2 7/10/14 448dd90a
我想查询返回的内容是:
id name first_visit_date reference_number
1 Bob 6/29/14 09f3be26
2 Jim 7/10/14 448dd90a
在另一个问题中,使用postgresql,最好的解决方案似乎是在上使用distinct on
,但这在其他方言中不可用。
通常,使用row_number()
:
select id, name, visit_date as first_visit_date, reference_number
from (select v.id, p.name, v.visit_date, v.reference_number,
row_number() over (partition by p.id order by v.visit_date desc) as seqnum
from visits v join
patients p
on v.patient_id p.id
) t
where seqnum = 1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.