如果在第一个表中找不到值,则在第二个表上联接

纳特奈

仅当第一次连接的结果为空时,我才想加入第二个表。以下是表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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果在第一个表中找不到值,则在第二个表上联接

来自分类Dev

内部联接两个表,并为第二个表的第一个表中的每个条目返回最大值

来自分类Dev

当第二个表中的布尔值为TRUE时,用第一个表覆盖第二个表的结果

来自分类Dev

在表单中,选择第二个表和第一个表

来自分类Dev

SQL根据第二个表中的值列表从第一个表中选择

来自分类Dev

SQL 连接,其中第二个表中的值是第一个表中的第一个较低值

来自分类Dev

如果在第一个XML中设置了属性,则XSLT从第二个XML复制元素

来自分类Dev

如果第一个表中还有其他数据,如何从第二个表中获取单个值?

来自分类Dev

查询第二个表的第一个值

来自分类Dev

在第一个表的字段或第二个表的字段中用WHERE左联接

来自分类Dev

将第二个CATEGORY表中的第一个表相加

来自分类Dev

如何使用第二个 sql 的名称从第一个表中删除值

来自分类Dev

2个数据库。如果第一个不存在值,则在第二个中查找/搜索

来自分类Dev

2个数据库。如果第一个不存在值,则在第二个中查找/搜索

来自分类Dev

如何通过第一个表值获取第二个表值

来自分类Dev

如何通过第一个表值获取第二个表值

来自分类Dev

联接2个表并从第一个表中获取一些列,并从第二个表中获取最大时间戳值

来自分类Dev

从第二个和第三个表中获取与第一个表中的匹配值相对应的值

来自分类Dev

如果在我收到第一个请求的响应之前发出了第二个HTTP请求,会发生什么情况?

来自分类Dev

通过添加第二个表的日期并减去SQL中第一个表的结果,根据第二个表中的值创建表视图

来自分类Dev

从第一个表中选择所有值,仅从第二个表中选择第一个值

来自分类Dev

连接2个sas表,并重复与第一个表中的公共值相对应的第二个值

来自分类Dev

SQL查询检查第一个表中的列或查找第二个表中的行

来自分类Dev

计算第二个表中与第一个表中的ID相匹配的条目

来自分类Dev

根据第一个表中的列在第二个表中插入新记录

来自分类Dev

mysql连接表,其中第一个表中的字段作为第二个表中的多个值

来自分类Dev

如果第一个表中不存在数据,我想从第二个表中获取数据

来自分类Dev

SQL Oracle-使用存储在第二个表中的值(行)的列名对第一个表中的列中的值求和

来自分类Dev

SQL Oracle-使用存储在第二个表中的值(行)的列名对第一个表中的列中的值求和

Related 相关文章

  1. 1

    如果在第一个表中找不到值,则在第二个表上联接

  2. 2

    内部联接两个表,并为第二个表的第一个表中的每个条目返回最大值

  3. 3

    当第二个表中的布尔值为TRUE时,用第一个表覆盖第二个表的结果

  4. 4

    在表单中,选择第二个表和第一个表

  5. 5

    SQL根据第二个表中的值列表从第一个表中选择

  6. 6

    SQL 连接,其中第二个表中的值是第一个表中的第一个较低值

  7. 7

    如果在第一个XML中设置了属性,则XSLT从第二个XML复制元素

  8. 8

    如果第一个表中还有其他数据,如何从第二个表中获取单个值?

  9. 9

    查询第二个表的第一个值

  10. 10

    在第一个表的字段或第二个表的字段中用WHERE左联接

  11. 11

    将第二个CATEGORY表中的第一个表相加

  12. 12

    如何使用第二个 sql 的名称从第一个表中删除值

  13. 13

    2个数据库。如果第一个不存在值,则在第二个中查找/搜索

  14. 14

    2个数据库。如果第一个不存在值,则在第二个中查找/搜索

  15. 15

    如何通过第一个表值获取第二个表值

  16. 16

    如何通过第一个表值获取第二个表值

  17. 17

    联接2个表并从第一个表中获取一些列,并从第二个表中获取最大时间戳值

  18. 18

    从第二个和第三个表中获取与第一个表中的匹配值相对应的值

  19. 19

    如果在我收到第一个请求的响应之前发出了第二个HTTP请求,会发生什么情况?

  20. 20

    通过添加第二个表的日期并减去SQL中第一个表的结果,根据第二个表中的值创建表视图

  21. 21

    从第一个表中选择所有值,仅从第二个表中选择第一个值

  22. 22

    连接2个sas表,并重复与第一个表中的公共值相对应的第二个值

  23. 23

    SQL查询检查第一个表中的列或查找第二个表中的行

  24. 24

    计算第二个表中与第一个表中的ID相匹配的条目

  25. 25

    根据第一个表中的列在第二个表中插入新记录

  26. 26

    mysql连接表,其中第一个表中的字段作为第二个表中的多个值

  27. 27

    如果第一个表中不存在数据,我想从第二个表中获取数据

  28. 28

    SQL Oracle-使用存储在第二个表中的值(行)的列名对第一个表中的列中的值求和

  29. 29

    SQL Oracle-使用存储在第二个表中的值(行)的列名对第一个表中的列中的值求和

热门标签

归档