我正在運行一系列導入的文件並將它們加載到創建的工作表中,然後將它們附加到最終表中。但是,我需要在決賽桌中擁有一個變量,而不是在所有導入的文件中都有。SAS SQL - CASE語句if列存在,如果不存在,則爲空
我遇到的問題是,每當我運行以下代碼的變體時,導入的文件不包含該變量時出現錯誤,說明「以下列未在貢獻表中找到: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;
有沒有辦法,我可以利用代碼/ case語句基本上說:「如果列不存在於表中的任何方式,再放入一片空白,否則,如果該列確實存在取值從該列進入新列「沒有收到上述錯誤?
我會「掛斷並聆聽」。謝謝!
爲什麼你使用SQL而不是DATA步驟? – Tom
Proc Append不會關心丟失的列,速度更快。可能需要FORCE選項。 – Reeza
我想我正在使用SQL步驟,因爲我之前收到了一些PROC Metalib錯誤。我已經切換到使用多個宏和一個Datastep,它現在似乎正在工作,再加上FORCE選項。感謝您的幫助! – Moomba44