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
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.