在2列上连接表-无法弄清楚

时间:2019-02-07 17:03:47

标签: sql

我不是SQL专家,尽管这看起来很简单,但是我不知道该怎么做...我已经尝试了所有我知道的东西,已经用Google搜索并尝试了我没有尝试过的东西知道但我只是无法获得干净的输出。我敢肯定这一定是以前问过的,但是我没有找到答案。希望有人能让我摆脱精神上的痛苦...

表1

TABLE 1

表2

TABLE 2

我需要做的是

对于表1中的每个acc_nbr / sip_nbr对

   获取最新 sell_dt并使用sell_dt,从表2中获取该日期sip_nbr的价格

例如,对于yyGG10234 / xxFF10234,输出应为

OUTPUT

1 个答案:

答案 0 :(得分:0)

使用子查询获取acc_nbr和sip_nbr的每个组合的最大日期,然后针对该子查询将另一个表联接起来

SELECT acc_nbr, t1.sip_nbr, max_sell, price
FROM (SELECT sip_nbr, acc_nbr, MAX(sell_dt) as max_sell
      FROM table1 
      GROUP BY sip_nbr, acc_nbr) t1 
LEFT JOIN table2 t2 ON t1.sip_nbr = t2.sip_nbr AND max_sell = t2.pricedate

我使用了左联接来包含表1(子查询)中的所有行,但是如果您只希望那些具有价格日期的行,则删除LEFT。