繁体   English   中英

如何加入最新记录? 的SQL

[英]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
)

需要注意的是:

  1. 表A在SQL DB中
  2. 表B从链接服务器到Oracle
  3. 表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方面,链接到该视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM