循环遍历表并在SAS中加入它们

Noz*_*oza 1 union loops sas proc-sql

我无法解决一个问题.

我在一个SAS库中有未知数量的表.我想创建一个循环,通过它们和"UNION ALL"这些表.

表是预先检查的,它们具有相同的结构.这些表包括历史数据,因此它应该是Union all.我尝试了以下脚本,但它会搜索所有可能性,但不会执行UNION ALL.

我很感激任何想法来解决这个问题.

%macro union_tables(table_name, last_extract); 
 %do i=1 %to &last_extract.;
        select * from data.&table_name&i
        union all
 %end;
        select * from data.&table_name&i
%mend;

proc sql; 
create table Full_history as 
%union_tables(Table_,1216);
quit;
Run Code Online (Sandbox Code Playgroud)

先感谢您.

dat*_*ll_ 5

也许你可以省去宏并使用SET语句.

data Many;
   set table_: open=defer;
   run;
Run Code Online (Sandbox Code Playgroud)

如果表与变量和类型完全相同,Open = defer可以节省大量内存.