仅当第一次加入的结果为空时,我才想加入第二个表。以下是表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可以处理的任何其他内容都是受欢迎的!
答案 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