如何在PROC SQL中使用CATS引用SAS变量?

时间:2018-07-13 17:48:21

标签: sql sas sas-macro

我似乎无法弄清的非常基本的东西。特定表中的列是在其前面带有下划线的数字,我在宏变量中存储了一个数字,并且我要使用的列的名称是带下划线的该数字。假设数字为9,当我编写以下代码时,会得到一个列,其中每个观察值都是_9而不是该数据集中的_9列。

    proc sql;
    create table TM1 as
        select cats("_",&rat_as_num) from default_data;
    quit;

1 个答案:

答案 0 :(得分:1)

CATS返回字符串,而不是变量名。因此,变量名称将无关紧要,您将获得一个带有_RAT_AS_NUM_VALUE的字符串。

要返回变量名称,请改用%SYSFUNC(),

data test;
_9 =  4;
run;


%let rat_as_num=9;

proc sql;
create table test2 as
select %sysfunc(cats(_, &rat_as_num)) from test;
quit;


proc print data=test2;
run;

每个@Richards评论也可以:

proc sql;
create table test2 as
select _&rat_as_nun from test;
quit;