sas sql作为一个字符传递给宏变量

时间:2012-01-13 19:11:36

标签: sql casting sas pass-through

如何将宏变量作为SAS SQL传递中的字符读取

我的目标是将“one”作为var3中的唯一值,但现在我得到了

“未知的第一栏”

 %macro test(notvar=)

proc sql;
      connect to odbc as conn (datasrc=x user=&user1. password=&pwd1.);
      create table &notvar. (compress=no) as select * from connection to conn
      (
            select var1, var2,
            &notvar. as var3
            from table1
      );
disconnect from conn;
quit;

%mend test;

%test(notvar=one);

1 个答案:

答案 0 :(得分:2)

虽然没有测试过。我认为你可以把宏变量作为列的值,如:

 select var1, var2,
 "&notvar" as var3
 from table1

 select var1, var2,
 symget('notvar') as var3
 from table1

如果未指定用于获取宏变量值的引号或函数,则所选对象(在您的情况下为“one”)将被视为原始表中的列。因此没有这样的列就会出错。