有誰知道爲什麼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;
感謝您的回答 –