bullstag 发表于 2015-6-8 09:07 
也只能这样了,如果只用sql, call symput 可以循环用多个macro variable 定义多行的值
proc sql noprint;
create table tmp_2 as select distinct
a.stkcd,b.p from tmp a,t3 b group by a.stkcd
having a.week=261-&n;
select distinct p,stkcd into: :p,:stkcd from tmp_2;
quit;
这样是不是也可以让宏变量读取多行啊?
但是,表t再次引用宏变量的时候,宏变量还是只取一行的值。
而且,新创建了tmp_2后,宏变量n又显示没有引用。n是在if do中用于循环的。
现在对宏变量还不太熟悉,不太懂宏变量什么时候处于引用状态?
data t;
n=&n;
p=&p;
stkcd="&stkcd";
run;