有人知道为什么proc sql不能在SAS /
的DATA STEP中使用例如,
DATA test;
set lib.table;
PROC SQL;
...
QUIT;
...some operators...
RUN;
PROC SQL..RUN之后; on运算符不会被处理。
感谢您的解释。
答案 0 :(得分:7)
因为像所有PROC一样 - 它操作/生成数据集 - 在数据步骤中没有意义。您可以使用SQL的FROM子句指定输入(类似于datastep set <setname>
),并且可以使用SQL CREATE TABLE
创建新数据集作为输出(类似于data <setname>
)
proc sql;
create table lib.new_table as select * from lib.table;
run;
没有什么可以阻止你使用适当的视图混合一个的功能,例如:
data lib.new_set_view / view=lib.new_set_view;
set lib.some_set;
/* do normal operations and output's */
run;
proc sql;
create table lib.other_set as select * from lib.new_set_view where something='whatever';
quit;
答案 1 :(得分:3)
Jon完全正确,但我会在9.4中添加,dosubl
确实允许这种功能(尽管由于速度问题,它通常不是一个好主意):
%macro procsql(sex);
%global mycount;
proc sql noprint;
select count(1) into :mycount from sashelp.class where sex="&sex.";
quit;
%mend procsql;
data addcount;
set sashelp.class;
rc=dosubl('%procsql('||sex||')');
count = input(symget("mycount"),best12.);
run;