根据两个表中的匹配更新变量

时间:2014-04-03 10:03:45

标签: sas

我有2个表,让我们将它们命名为table1和table2。它们都有credit_id,loan_id和Date字段。由于某种原因,需要使用table2中的相应值更新credit_id字段,通过Date和loan_id字段链接数据。为此,我做了一个查询:

proc sql;
    UPDATE a
    SET a.credit_id = b.credit_id
    FROM table1 a, table2 b
    WHERE (a.Date = b.Date) AND (a.loan_id = b.loan_id);
quit;

根据谷歌搜索,这个查询应该在许多sql环境中工作,但似乎SAS在这里是一个例外,因为它似乎忽略来自部分。

如何更新所需的字段?

1 个答案:

答案 0 :(得分:0)

我无法对SQL发表评论,但你可以使用数据步骤做同样的事情:

data table1;
  update table1 table2(keep = date loan_id credit_id);
  by date loan_id;
run;

这需要:

  • 同一个表中没有两行具有相同的日期和loan_id,以及
  • 这两个表都按日期和贷款ID
  • 排序/编制索引

您需要事务数据集上的keep,以防止它更新/创建主数据集上的任何其他变量。还有其他几种方法可以做到这一点,例如:使用修改或合并语句。