/*1.use proc content*/
proc contents data=sashelp._all_ out=a
(where=(format="DATETIME")) noprint;
run;
proc sql noprint;
select distinct name,"sashelp."||cats(memname)||"(keep="||cats(name)||")" into :dat separated by ",", : dt_list separated by " "
from a;
quit;
data date;
length dt $20;
set &dt_list.;
dt = coalescec(&dat.);
run;
/*2.use dictionary.columns*/
这里需要变量名name有相同的规律,比如时间变量都包含DATE
proc sql noprint;
select distinct name,"sashelp."||cats(memname)||"(keep="||cats(name)||")" into :date separated by "," ,:dslist separated by " "
from dictionary.columns
where libname="SASHELP"
and index(upcase(name),"DATE") ;
quit;
data date1;
length dt $20;
set &dslist.;
dt = coalescec(&date.);
run;
note:这里所有的变量都必须是统一的格式,字符型或者数值型。coalescec返回所有字符型的第一个非空值。
tables对应sashelp.vtable, columns对应sashelp.vcolumn