使用数组比较表列值

时间:2014-09-29 01:47:39

标签: arrays sas

我在tableA和tableB中有以下数据。

表A,列:TXNID,DUMPDT

表B,列:TXNID,DUMPDT

我需要比较这两个表A和B中的TXNID,然后如果表B中不存在TXNID,那么我需要用缺少的TXNID更新表B. TXNID是一个字符列,最多包含50个字符,DUMPDT是一个dt列,日期类型格式,长度为8个字符(格式为DATETIME22.3 / informat DATETIME22.3)

我正在考虑使用数组,因为作为源表的表A可能会不时有不同的行数,所以我真的不知道表A中有多少行采取和比较表B.

我目前有以下代码,但它似乎没有正常工作,对不起我是SAS新手所以请原谅我的错误,我相信我已经做了,我尝试使用多维数组:

       data work.tableA;
       set tableA;
       array TXNID[*, 1] $ 50 ;
       run;

       data work.tableB;
       set tableA;
       array TXNID[*, 1] $ 50 ;
       run;

我假设只要在TXNID列的表A和表B中都存在值,我将不得不使用某种do循环来比较值

非常感谢任何帮助或建议

1 个答案:

答案 0 :(得分:1)

我会用SQL来解决这个问题。这里我们得到tableA中存在但不在tableB中的所有TXNID,并将它们插入到tableB中。

proc sql;
INSERT INTO work.tableB
select a.TXNID, a.DUMPDT
from work.tableA a
where a.TXNID not in (select TXNID from work.tableB);
quit;