SAS:DATA STEP与PROC SQL

时间:2014-01-17 12:52:46

标签: sas

有人知道为什么proc sql不能在SAS /

的DATA STEP中使用

例如,

DATA test;
set lib.table;
  PROC SQL;
   ...
  QUIT;
  ...some operators...
RUN;

PROC SQL..RUN之后; on运算符不会被处理。

感谢您的解释。

2 个答案:

答案 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;