有谁知道为什么PROC SQL不能在SAS/SAS:数据步与PROC SQL
例如DATA步骤中使用,
DATA test;
set lib.table;
PROC SQL;
...
QUIT;
...some operators...
RUN;
PROC SQL..RUN后;对运营商没有处理。
感谢您的解释。
有谁知道为什么PROC SQL不能在SAS/SAS:数据步与PROC SQL
例如DATA步骤中使用,
DATA test;
set lib.table;
PROC SQL;
...
QUIT;
...some operators...
RUN;
PROC SQL..RUN后;对运营商没有处理。
感谢您的解释。
因为像所有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;
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;
感谢您的回答 –