繁体   English   中英

Oracle-通过一对多关系,根据最小值选择不同的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM