如何加入最新记录? SQL

时间:2010-02-25 00:18:19

标签: sql

我正在查询以获取A记录日期之前的每条A记录的最新B记录。 (我希望这是有道理的)

我不知道怎么做!请帮忙!

我的最终观点将是

AID, AData, ADate, BData

粗糙表架构

table A
(
AID,
ADate,
AData
)

table B
(
BID,
AID,
BDate,
BData
)

需要注意的事项是:

  1. 表A在SQL DB
  2. 表B来自     链接服务器到Oracle
  3. 表B是超级的     

    谢谢!

1 个答案:

答案 0 :(得分:2)

这个查询可以解决问题:

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端,链接到该视图。