Hello
I want to perform left join via proc sql and it might happen the the data set is not existing.
In such case I want that the wanted data set will be created without fields from non existing data set (sex,revenue).
I get an error in this code,
may anyone help please?
ERROR: There is no matching %DO statement for the %END. This statement will be ignored.
Data AAA;
input ID X y ;
cards;
1 10 20
2 30 40
3 50 60
;
Run;
%macro RRR;
proc sql;
create table wanted as
select a.*,
%if %sysfunc(exist(BBB)) %then %do;
b.revenue,
b.Sex
%end
from AAA as a
%if %sysfunc(exist(BBB)) %then %do;
left join BBB as b
on a.ID=b.ID
%end;
;
quit;
%mend RRR;
%RRR;
/*ERROR: There is no matching %DO statement for the %END. This statement will be ignored.*/
You just have to get the commas and semicolons right 🙂
Data AAA;
input ID X y ;
cards;
1 10 20
2 30 40
3 50 60
;
Run;
%macro RRR;
proc sql;
create table wanted as
select a.*
%if %sysfunc(exist(BBB)) %then %do;
,b.revenue
,b.Sex
%end;
from AAA as a
%if %sysfunc(exist(BBB)) %then %do;
left join BBB as b
on a.ID=b.ID
%end;
;
quit;
%mend RRR;
options mprint;
%RRR
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.