如果在第一个表中找不到值,则加入第二个表

时间:2016-07-14 20:40:06

标签: sql sas

仅当第一次加入的结果为空时,我才想加入第二个表。以下是表A数据的小节:

ID  Metro   Submarket 
1   NYC     Manhattan
2   NYC     Brooklyn
3   NYC     Queens
4   NYC     Bronx
5   NYC     Newark

我用于连接的表是:

Table B                                         Table C         
Metro   Submarket   A.Price B.Price C.Price     Metro   A.Price B.Price C.Price
NYC     Manhattan   54      32      48          NYC     50      49      69
NYC     Queens      35      39      59          Philly  49      48      37
NYC     Brooklyn    20      49      58          Chicago 20      48      36
NYC     Bronx       49      30      20                  
NYC     Newark      49      50      -

我正在根据地铁和子市场匹配将表B中的价格列添加到表A.但是,表B没有全部价格。如果我在表B中找不到匹配,那么我想查看表C,仅在Metro上进行匹配。

对于ID 5,我们可以在表B中找到A和B价格。但是,C价格是空白的。在这种情况下,我希望它从表C中检索C价格(69是它会选择的)。

我正在使用SAS 9.4。 SQL,宏或SAS可以处理的任何其他内容都是受欢迎的!

1 个答案:

答案 0 :(得分:7)

您可以将两个表连接到主表,只需使用Table B即可。这将为您提供Table C中的值,否则它将为您提供PROC SQL; CREATE TABLE Output AS SELECT ta.ID, ta.Metro, ta.Submarket, COALESCE(tb.A_Price,tc.A_Price) AS A_Price, COALESCE(tb.B_Price,tc.B_Price) AS B_Price, COALESCE(tb.C_Price,tc.C_Price) AS C_Price FROM tablea ta LEFT JOIN tableb tb ON (tb.Metro = ta.Metro) AND (tb.Submarket = ta.Submarket) LEFT JOIN tablec tc ON (tc.Metro = ta.Metro); QUIT; 中的值:

date