【发布时间】:2017-11-20 09:45:15
【问题描述】:
%let rows = "";
%macro test;
proc sql noprint;
select count(ID)
into: sqlRows
from mytbl;
quit;
%do i = 1 %to &sqlRows; * loop from 1 to sqlRows;
proc sql noprint;
select ID
into: ColumnID
from mytbl(firstobs= &i);
quit;
%if &rows eq "" %then %do
%let rows = "<tr><td>&ColumnID</td></tr>";
%end;
%if &rows ne "" %then %do
%let rows = "&rows<tr><td>&ColumnID</td></tr>";
%end;
%end;*End loop;
%mend;
%test;
%put &rows;
你好我想把mytbl的列ID数据的所有数据放到一个变量中。
我创建了一个名为 rows 的变量并在其中分配了空值。然后使用循环我逐个获取值 mytab 并将它们保存在 columnID 变量中。如果 rows 变量为空,则仅将 tr 和 td 添加到 columnID 数据。如果 rows 变量不为空,则追加它。但它只给了我表的最后一条记录。
假设 mytbl 在 ID 列中有数据 1,2 和 3
rows 变量的数据应该为
<tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr>
但它只向我显示最后一行的数据
<tr><td>3</td></tr>
【问题讨论】:
-
我看不到您在哪里创建任何变量。您似乎只是试图将数据放入宏变量中。将数据保存在实际数据集中可能更容易。您打算如何处理这些数据?看起来像 HTML 代码,你打算写一个 HTML 文件吗?