如何在 SAS 中使用 prosql 使行与 2 个以上的表绑定

How to make row bind with more than 2 tables using prosql in SAS

我有多个表,例如 Table1 Table2 Table3Table4 它们具有相同顺序的相同列。我想垂直绑定它们 我不知道怎么做。 我试过这段代码:

PROC SQL; 

    create table Table_final AS

    ( 

    select * from Table1 

    union all

    select * Table2 
    
    union all

    select * Table3 
  
    union all

    select * Table4 

    ); 

    QUIT;

但是不行

很高兴你用另一种方式自己解决了这个问题。但是,您通过忽略查询中的 FROM 语句而犯了一些语法错误。

这是您更新后的代码:

PROC SQL; 
create table Table_final AS
 ( 
    select * from Table1 
    union all
    select * from Table2     
    union all
    select * from Table3   
    union all
    select * from Table4 
 ); 
QUIT;

这对我有用。

SQL 或数据步骤不是非常高效,因为它们逐行处理数据。相反,最快的方法是使用 PROC APPEND 一次将它们组合在一起。这会逐块复制数据,而不是一次复制一行。请注意,在此过程之前,Base table 不需要存在。

proc append base=table_final data=data1;
run;
proc append base=table_final data=data2;
run;
proc append base=table_final data=data3;
run;