如何在某些表为空的情况下执行 UNION

how to perform a UNION where some tables are empty

我希望在 3 个 table 之间执行 UNION,我知道其中 1 个没有值(空 table)。 我在使用 SAS PROC SQL 时遇到错误: 错误:Table WORK.B 没有任何列。

我的代码:

select *
from work.A
union 
select *
from work.B
union 
select *
from work.C

据我了解,我需要使用 EXIST,以便 UNION 仅存在 tables。

日志错误消息还指出 PROC SQL requires each of its tables to have at least 1 column.

您可以使用 DATA 步骤 SET 语句堆叠(联合)您的数据,然后 SORT 去除重复项。

示例:

data x;
  set sashelp.class (where=(name=:'A'));

data y;
  stop;

data z;
  retain age weight name height;
  set sashelp.class (where=(name in: ('A', 'J')));
run;

data want;
  set x y z;
run;

proc sort data=want nodupkey;
  by _all_;
run;