2015-10-07 111 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。嗯,看起来我有一些阅读任务要做。 –