我正在运行一系列导入的文件并将它们加载到创建的工作表中,然后将它们附加到最终表。但是,在最终表格中我需要的一个变量并不存在于所有导入的文件中。
我遇到的问题是,每当我运行以下代码的变体时,我都会收到错误消息"在贡献表中找不到以下列:CAA_SERVICE_NUMBER"对于不包含该变量的导入文件:
%if %trim(&import.)=STA %then %do;
proc sql;
create table work.Worf as
select ACCOUNT_NUMBER,
APPL_ID,
PROCESS_COST_CENTER,
"" AS FIELD_NAME,
COST_DRIVER_ID,
CASE When (CAA_SERVICE_NUMBER IS NOT NULL) THEN (CAA_SERVICE_NUMBER) ELSE ("") END AS CAA_SERVICE_NUMBER,
"&Extract" AS Purvis,
1 AS Count
from sysval.Friar;
quit;
%end;
有没有办法可以利用代码/案例陈述基本上说"如果列中没有列,那么请填空,否则如果列确实存在则取值从该列到新列"没有收到上述错误?
我会"挂断电话"。谢谢!
答案 0 :(得分:0)
您当然可以查询dictionary.columns
并提前确定它是否存在,然后使用%if
不显示该名称。
但更容易创建一个 拥有它的视图。
data friar_view/view=friar_view;
set sysval.friar;
if missing(CAA_Service_Number) then caa_service_number=" ";
run;
(如果它是数字,则数字丢失,但它看起来像上面查询中的char变量)。然后在sql查询中使用该视图,它将始终存在!