Thanks kiranv. I think I can't use the hash table in one dataset like your code. Because I'm joining with four different datasets. I have used the hash table logic but calling the macro 4 times as below. Please let me know if there is any better solution. Thanks in advance! %macro hash_macro (hash_table, in_table, out_table, keyvar, renamevar); data &out_table. (drop=&renamevar.); set &in_table.; if _n_ = 0 then set &hash_table.; if _n_ = 1 then do; declare hash ht (dataset: "&hash_table. (rename = (&renamevar. = &keyvar. ))", ordered: "A"); ht.definekey ("&keyvar."); ht.definedata ("&keyvar."); ht.definedone ( ); end; if ht.find() = 0 then do; &hash_table. = 1; output; end; else do; &hash_table. = 0; output; end; run; %mend; /* call hash_macro for account table*/ %hash_macro(subacc1, all_account, account1, AccountNo, account_no); %hash_macro(subacc2, account1, account2, AccountNo, account_no); %hash_macro(subacc3, account2, account3, AccountNo, account_no); %hash_macro(subacc4, account3, account_new, AccountNo, account_no);
... View more