2016-11-11 10 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

これを修正する必要がありますか? 'ここで、'%_FIRE 'のような小文字(_name_)は、'%_fire 'のような小文字(_name_) – Nicarus

+0

ええ、私は間違ったコードを入れました。私は問題のコードを編集します – Keliimek

+0

'%put&= .;'は何を表しますか? – 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; 
関連する問題