Macros 如何在SAS宏中将数据集的名称作为列

Macros 如何在SAS宏中将数据集的名称作为列,macros,sas,Macros,Sas,我想写一个宏。马可是关于输出副本的。然后将它们全部附加到一个数据集中。这个数据集将有两列:表名(我在一个库中选择)、主键。 那么,如何在宏中获取所有表名? 我想我可以这样做:dataset='&data'。作为此dataset中的新列。但宏会将所有这些数据视为&数据。而不是交换到表名 谢谢你要准确地确定你想要什么并不容易,但这里有两个起点你可以使用 您可以使用:into选项创建宏变量,该宏变量包含由分隔符分隔的许多内容的列表: PROC SQL NOPRINT; SELECT EMPID, IN

我想写一个宏。马可是关于输出副本的。然后将它们全部附加到一个数据集中。这个数据集将有两列:表名(我在一个库中选择)、主键。 那么,如何在宏中获取所有表名? 我想我可以这样做:dataset='&data'。作为此dataset中的新列。但宏会将所有这些数据视为&数据。而不是交换到表名


谢谢你

要准确地确定你想要什么并不容易,但这里有两个起点你可以使用

您可以使用:into选项创建宏变量,该宏变量包含由分隔符分隔的许多内容的列表:

PROC SQL NOPRINT;
SELECT EMPID,
INTO :E1 SEPERATED BY “ , ”

FROM dset;
QUIT;

%PUT &E1;
您还可以保存编号的宏变量和&varnum(保存为变量的数据集的数量),并在循环中进行追加(假设您将数据集列为var1到varx):


在“中解析宏变量不起作用,它使用&data作为字符串”,这是您在这里需要的,所以请使用dataset=“&data”。但我不明白这是您的问题,还是您需要帮助在宏中构建所描述的datastep。发布您的代码总是很好的,这样人们可以更好地理解问题。。。
*needs to be in a macro;
%macro  loop_through();
    %do i = 1 %to &Varnum;

       /* proc append code here with data = &&var&i 
    (etc, &&var&i will resolve to &var1, &var2 and so on) */

    %end;
%mend;

%loop_through();