我正在查询以获取 A 记录日期之前的每个 A 记录的最新 B 记录。 (我希望这是有道理的)
我不知道该怎么做!请帮忙!
我的最终观点将是
AID, AData, ADate, BData
粗表模式
table A
(
AID,
ADate,
AData
)
table B
(
BID,
AID,
BDate,
BData
)
需要注意的有:
链接服务器到 Oracle
巨大的
谢谢!
最佳答案
这个查询可以解决问题:
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 表的副本,在那里解决查询完全是 View 中的内容,然后如果您需要在MSSQL 端,链接到该 View 。
关于sql - 如何对最新记录进行联接? SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2330702/