2014-09-29 72 views
0

我在tableA和tableB中有以下数据。使用数组来比较表列值

表A与柱:TXNID,DUMPDT

用柱表B:TXNID,DUMPDT

我需要将TXNID比较这两个表A和B中,然后,如果TXNID犯规存在于表B然后我需要更新表B与缺少TXNID。 TXNID是一个字符列,最多包含50个字符长度,DUMPDT是一个带有8个字符长度的日期类型格式的dt列(格式为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; 

我假设我将不得不使用还挺有的做循环,只要有存在于表A和表B值在TXNID列

任何帮助或建议,将不胜感激比较值

回答

1

我会用SQL来解决这个问题。在这里,我们得到tableA中存在的所有TXNID,但不是在tableB中并将它们插入到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; 
+0

感谢Dannmate为您的建议,我会试试这个,让你知道它是怎么回事 – vbala2014 2014-09-29 14:40:53