首先,获取所有可能的表:
data PRODUCT_TABLES;
set SASHELP.VTABLE (keep=libname memname);
*get what you need, here i keep it simple;
where lowcase(substr(memname,1,9))='products_';
run;
接下来,按日期对其进行排序,由于数据集名称的格式很容易完成。
proc sort data=PRODUCT_TABLES;
by memname;
run;
最后,你只需要取出日期足够大的第一条记录。
data _NULL_;
set PRODUCT_TABLES;
*compare to your macro variable, note that i keep it as simple as possible and let SAS implicitly convert to numeric;
if substr(memname,10,18)>=symgetn("max_enddate") then do;
*set your match into a macro variable, i have put together the libname and memname here;
call symput("selectedTable",cats(libname,'.',memname));
stop; *do not continue, otherwise you will output simply the latest dataset;
end;
run;
现在,当您想使用适当的数据集时,您可以只放置宏变量,例如:
data SOME_TABLE;
set &selectedTable.;
/*DO SOME STUFF*/
run;