微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL 右外部联接仅返回具有最新日期的案例

如何解决SQL 右外部联接仅返回具有最新日期的案例

我有 2 个表,Referral 和 Hospital,我正在尝试进行联接并查看与医院单位相关的所有推荐 ID。

当我运行以下查询时,我得到了我需要的数据

    Select Referral.ReferralID,Hospital.Unit
    from Referral
    Join Hospital
    On Referral.HospitalUnit = Hospital.Unit

我还想查看与推荐无关的单位。所以我做了一个正确的加入并获取我的数据

    Select Referral.ReferralID,Hospital.Unit
    from Referral
    Right Outer Join Hospital
    On Referral.HospitalUnit = Hospital.Unit

但是,单位在一年中可能会有细微的变化,这些数据会记录在医院单位表中。我只想返回更新日期最新的行。

这是因为空引用多次带回相同的单元。下面是一个例子。当我只需要 1

时,我会在我的查询中获得多个 ICU
单位 上次更新时间
重症监护室 10-9-2020
CCU 11-1-2020
重症监护室 11-1-2020

如何仅使用最新的更新日期运行正确的外部联接?

解决方法

我还想查看与推荐无关的单位。

NOT EXISTS 似乎是最自然的方法:

select h.*
from hospital h
where not exists (select 1
                  from referral r
                  where r.HospitalUnit = h.Unit
                 );

如果您想要每个单元的最新推荐,请使用子查询:

select h.*,r.*
from (select h.*,row_number() over (partition by r.HospitalUnit order by h.updated_on desc) as seqnum
      from hospital h
     ) h left join
     referral r
     on r.HospitalUnit = h.Unit 
where h.seqnum = 1;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。