如何在SQL中使用宏? (對於每一件事情,那選擇)SAS宏:在宏程序中使用sql
我的意思是這樣的:
&VarTable
是一個表,其中有兩個變量:(例如)Lib
和Table
在&VarTable
每個觀測值是表的名稱:Lib.Table
我想爲每個表做的事情:
1)存在嗎?
2)排序它
和最後一個條件: 每個表,如果存在,具有可變&VarField
。
%macro mSortedTable(vLib,vTab,vVar);
%if %sysfunc(exist(&vLib..&vTab)) %then %do;
proc sort data = &vLib..&vTab;
by &vVar;
run;
&vLib..&vTab
%end;
%else %do; "" %end;
%mend mSortedTable;
proc sql noprint;
select %mSortedTable(vLib=Lib,vTab=Table,vVar=&VarField)
into: AccumVar separated by " "
from &VarTable;
quit;
如何用sql和宏來做到這一點?
迴避的第一個問題:這個代碼不工作,當然 – gaussblurinc 2012-04-10 15:12:43
的所以用含有庫的觀測和數據的數據集設置名稱要執行的操作在每個數據集?你想把每個變量名稱放入一個宏? – 2012-04-10 15:30:21
是的。我的同事說我,我可以做到這一點,使用貓和macrogeneration: proc sql noprint; 'select cats('%mSortedTable(',Lib,',',Table,',',&VarField,')')into:AccumVar由「」分隔' 但這個變體不能用在datastep中,所以我決定使用與兩個宏相同的結構,首先將排序,另一個將名稱'Lib.Table' – gaussblurinc 2012-04-12 07:49:02