2014-01-17 176 views
0

有誰知道爲什麼PROC SQL不能在SAS/SAS:數據步與PROC SQL

例如DATA步驟中使用,

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

PROC SQL..RUN後;對運營商沒有處理。

感謝您的解釋。

回答

6

因爲像所有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; 
+0

感謝您的回答 –

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;