簡體   English   中英

SAS:DATA STEP與PROC SQL

[英]SAS: DATA STEP vs. PROC SQL

有誰知道為什么proc sql不能在SAS /中的DATA STEP中使用

例如,

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM