2014-09-29 49 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