如何在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