2017-07-28 11 views
0
での更新使用のproc SQL

私はある条件 のproc SQL HAVINGエクスポートされた表からの2つの変数をSELECTED THENを挿入すると同時に、SAS

proc import datafile="/opt/Export_d.csv" replace 
out=work.export_data; run; 

procのインポートを使用してファイルをインポートしています。今

proc SQL; 
select max(' SURVEY_ID'n) into: sid from work.login2; 
quit; 

IDが空白の場合、私は「ドン:私は以下のコードに示されている別のテーブルでSurvey_idを参照して値を更新する必要があるため

create table work.login2 
as select ' SURVEY_ID'n, TIME format=datetime20.,' USERNAME'n 
from work.export_data 
having TIME=max(TIME) and ' USERNAME'="sasdemo"; 
quit; 

は、それからsurvey_idのマクロを作成しました何も挿入する必要はありませんが、survey_idがある場合は、以下のコードを使ってテーブル内の列を更新することはほとんどありません。

proc SQL; 
case when ' SURVEY_ID'n is not null then update table_name set SAS_TRACKING_CODE="&Trackingcode." 
where SURVEY_ID=&sid. 
else end; 
quit; 

答えて

0

proc sqlの構文は無効です。まったく。 case whenは、select,whereorder byなどの文章でのみ使用できます。 SURVEY_IDが空白でない場合 以下は、あなたの更新を行います。

proc sql; 
    update table_name 
    set SAS_TRACKING_CODE="&Trackingcode" 
    where SURVEY_ID=&sid. and SURVEY_ID is not null 
    ; 
quit; 

何がしたいことはupdateのみ条件が真であるとき、あなたがマクロを使用する必要がありますを実行する場合。

EDIT:マクロは次のようになります。私は間違ったコードを書かれている申し訳

%macro update; 
    %if %symexist(sid) and not &sid = %then %do; 
    proc sql; 
     update table_name 
     set SAS_TRACKING_CODE="&Trackingcode" 
     where SURVEY_ID=&sid. 
     ; 
    quit; 
    %end; 
%mend; 
+0

。私は以下のコードを書いています: proc sql; update table_name SAS_TRACKING_CODE = "&Trackingcode"を設定します。 ここで、SURVEY_ID =&sid。 SURVEY_IDがnullではありません。 終了します。 今、私はSurvey_IDがNullであり、nthgであると言う条件を1つ増やしたいと考えています。 –

+0

@AkshayPatil私はあなたが何を意味しているか分かりません。 survey_idがnullの場合、上記のクエリ_will_は何も行いません。 – user2877959

関連する問題