如何解决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 举报,一经查实,本站将立刻删除。