data1.* and data2.* does not work unless you rename the variables ID and Name in either dataset.
Using DICTIONARY.COLUMNS is an alternative, but it fails to be as satisfying as the syntax X1--X5.
data data1;
ID=_N_;
set SAShelp.Fish (Keep=Species Length: obs=3);
rename
Species=Name
Length1=X1
Length2=X2
Length3=X3
;
data data2;
ID=_N_;
set SAShelp.Fish (Keep=Species Length: firstobs=4 obs=6);
rename
Species=Name
Length1=Y1
Length2=Y2
Length3=Y3
;
run;
proc sql noprint;
select cats(memname,".",name)
into :data1_X1_X3 separated by ","
from dictionary.columns
where LIBNAME="WORK"
and memname = "DATA1"
and name like "X_";
select cats(memname,".",name)
into :data2_Y1_Y3 separated by ","
from dictionary.columns
where LIBNAME="WORK"
and memname = "DATA2"
and name like "Y_";
quit;
%put &=data1_X1_X3 ;
%put &=data2_Y1_Y3;
proc sql;
select data1.ID,
data1.name,
&data1_X1_X3,
&data2_Y1_Y3
from data1, data2;
quit;
... View more