我一直在尝试解析 issue 并使用不同的方法来解决它。我创建了一个宏来获得实际价值。 sql生成一个HTML视图,其中包含我需要的值。
%macro actualvalue();
proc sql noprint;
%do i=1 %to %wordcount(&fieldlist);
Select %scan(&fieldlist,&i) into :actualvar separated by ' ' FROM TableA Where
IncidentItemId=%scan(&incidentitemlist,&i);
%end;
quit;
%mend actualvalue;
但是,actualvar宏变量似乎没有捕获该值。我尝试初始化宏变量的方式是否有问题,或者这不能在宏内执行。对此有任何想法将不胜感激。
答案 0 :(得分:1)
我认为每次do
循环运行时,它都会覆盖先前的actualvar
值。你需要使用像
select %scan(&fieldlist,&i) into :actualvar&i ...
然后打印出&actualvar1
&actualvar2
等的值...以检查结果。
答案 1 :(得分:0)
至少你需要把PROC SQL语句放在DO循环中,因为你的目标是多次运行proc sql
%do i=1 %to %wordcount(&fieldlist);
proc sql noprint;
Select %scan(&fieldlist,&i) into :actualvar separated by ' ' FROM TableA
Where IncidentItemId=%scan(&incidentitemlist,&i);
%end;
我认为其余部分没有任何问题。给它一个测试并报告任何错误。 我会相应地修改这个答案。