2016-11-11 24 views
1

我需要選擇列名稱包含字符串'_fire'的列。名稱可以通過聲明選擇使用PROC SQL爲列創建保留列表

proc sql; 
create table x as select _name_ 
from work.x 
where lowcase(_name_) like '%_fire' 
;quit; 

但我不知道,下一步該做什麼?我試圖將這些數據插入到變量中,但後來出現錯誤:KEEP選項的值無效。

proc sql noprint; 
select _name_ 
into :names 
from work.x 
where lowcase(_name_) like '%_fire'; 
quit; 


DATA twowks1 ; 
SET work.&tabulka. (KEEP = &names.) ; 
RUN; 

任何人都可以幫助我嗎? Thx

+0

您是否應該解決這個問題?:'哪裏的低檔(_name_)像'%_FIRE'到'哪裏低檔(_name_)像'%_fire''? – Nicarus

+0

是的,我把錯誤的代碼。我將編輯有問題的代碼 – Keliimek

+0

'%put&= names。;'揭示了什麼? – Joe

回答

2

您在PROC SQL查詢中缺少separated by。 但是,當&名稱不存在時,我只會得到您的錯誤,那麼您的SQL查詢是否存在錯誤?

*To generate your error; 
%symdel names; 
DATA twowks1; 
    SET work.&tabulka. (KEEP=&names.); 
RUN; 

下面是一些工作,你可能期望。

*Works as expected; 
proc sql noprint; 
    select _name_ into :names separated by " " 
    from work.x 
    where lowcase(_name_) like '%_fire'; 
quit; 

DATA twowks1; 
    SET work.&tabulka. (KEEP=&names.); 
RUN;