2015-10-07 61 views
2

我是SAS新手,我需要從proc sql中寫入一個單獨的值到文件中,但我遇到了很多麻煩。請參閱下面的代碼。從proc sql寫入文件

data _null_; 
FILE 'C:\MyFile.txt'; 

proc sql; 
    select datepart(max(DateCreated)) into :dt from epx.temp; 
    %put &dt date9.; 
quit; 

run; 

我在作業的Precode和Postcode屬性中的MACRO中運行此代碼。

回答

2

proc sql語句在數據步驟中無效。實際上,SAS將proc識別爲數據步驟的結束邊界,因此您的數據步驟僅包含file語句,並且不執行任何操作。

file語句影響put語句,而不是宏%put語句。

不改變你的通用方法,你可以做到以下幾點:

把格式化值成宏變量然後用數據步驟值寫入文件。

proc sql; 
select put(datepart(max(DateCreated)),date9.) into :dt from ext.temp; 
quit; 

data _null_; 
    FILE 'C:\MyFile.txt'; 
    put "&dt"; 
run; 

另一種方法是做數據的步驟一切,完全避免使用宏變量:

data _null_; 
    file 'C:\MyFile.txt'; 
    set ext.temp end=eof; 
    retain maxdate; 
    if datepart(DateCreated) gt maxdate then maxdate=datepart(DateCreated); 
    if eof then put maxdate date9.; 
run; 
+0

太好了!你太棒了!!!它正在按照我希望的方式工作。 :-D非常感謝你!順便說一句,有什麼更好的,第一或第二種方法?第一種方法對我來說更容易理解,因爲我來自SQL。嗯,看起來我有一些閱讀任務要做。 –