仅当第一次连接的结果为空时,我才想加入第二个表。以下是表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中找不到匹配项,那么我只想在Metro上查看表C中的匹配项。
对于ID 5,我们可以在表B中找到A和B的价格。但是,C的价格是空白的。在这种情况下,我希望它从表C中检索C价格(它将选择69)。
我正在使用SAS 9.4。欢迎使用SQL,宏或SAS可以处理的其他任何功能!
您可以将两个表都连接到主表,而只需使用COALESCE()
。如果存在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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句