[英]How to do a join on the latest record? SQL
我正在查询以获取A记录日期之前的每个A记录的最新B记录。 (我希望这是有道理的)
而且我不知道该怎么做! 请帮忙!
我的最终观点是
AID, AData, ADate, BData
粗糙表架构
table A
(
AID,
ADate,
AData
)
table B
(
BID,
AID,
BDate,
BData
)
需要注意的是:
谢谢!
这个查询可以解决问题:
select a.*, curr.*
from a
inner join b curr
on a.aid = curr.aid
and a.adate > curr.bdate
where curr.bdate = (
select max(b.bdate)
from b
where b.aid = curr.aid
and b.bdate <= curr.bdate
)
有一些屁股。 我对这些“链接表”没有太多经验,但是我可以想象它出了错。 您应该尝试弄清楚MS SQL如何解决这种查询。 您要确定的是,它可以将子查询下推到oracle端-您绝对不希望MS SQL通过网络获取所有数据并在MS SQL端执行它。
如果性能是一个问题,则您可能应该尝试以另一种方式进行操作-在oracle端获取A表的副本,在那里完全解决视图中的问题,然后如果需要MSSQL方面,链接到该视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.