我正在查询以获取A记录日期之前的每条A记录的最新B记录. (我希望这是有道理的)
我不知道怎么做!请帮忙!
我的最终观点将是
AID, AData, ADate, BData
粗糙的表架构
table A
(
AID,
ADate,
AData
)
table B
(
BID,
AID,
BDate,
BData
)
需要注意的是:
>表A在SQL DB中
>表B来自
链接服务器到Oracle
>表B是超级的
巨大
谢谢!
最佳答案 这个查询可以解决这个问题:
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方面,链接到该视图.