BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
GunnerEP
Obsidian | Level 7

I have a merge statement which needs to be converted to a proc sql join,

 

data a.main;
merge main
a.proxy;
by id;
run;

 

which i wrote it as,

 

proc sql;
create table a.main as
select * from main a join a.proxy b
on a.id=b.id;
run;

 

Now the tough part for me is, the data step has gone bit complex with parameters how do i replicate the same in proc sql ?

 

data a.main;
merge main a.proxy
(drop=name address city pin_code
%if %eval(&ht2. IN XX YY ZZ) %then
%str(orig_name);
);
by id; run;
run;

1 ACCEPTED SOLUTION

Accepted Solutions
ChrisNZ
Tourmaline | Level 20

1- Your merge and join steps are not equivalent. See below:

data T1; 
  X=1;
data T2; 
  X=2;
data J1; 
  merge T1 T2; 
  by X;
proc sql; 
  create table J2 as 
  select * 
  from T1 join T2 
   on T1.X=T2.X;
quit;

The SQL step only keeps common keys.

The steps are only equivalent if all key values are common to both tables, and unique

 

2- Just add the same option in your SQL.

proc sql;
create table a.main as
select * from main a join a.proxy(drop=name address city pin_code %if %eval(&ht2. IN XX YY ZZ) %then %str(orig_name) ) b
on a.id=b.id;
run;

 

View solution in original post

1 REPLY 1
ChrisNZ
Tourmaline | Level 20

1- Your merge and join steps are not equivalent. See below:

data T1; 
  X=1;
data T2; 
  X=2;
data J1; 
  merge T1 T2; 
  by X;
proc sql; 
  create table J2 as 
  select * 
  from T1 join T2 
   on T1.X=T2.X;
quit;

The SQL step only keeps common keys.

The steps are only equivalent if all key values are common to both tables, and unique

 

2- Just add the same option in your SQL.

proc sql;
create table a.main as
select * from main a join a.proxy(drop=name address city pin_code %if %eval(&ht2. IN XX YY ZZ) %then %str(orig_name) ) b
on a.id=b.id;
run;

 

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 1437 views
  • 1 like
  • 2 in conversation