单引号值使用sql创建宏变量

Ada*_*amO 1 sas sas-macro

我在SAS中使用宏来遍历特定库中的数据表.我将元数据信息放在数据空步骤中,并与where语句和我的宏变量进行比较.

我的SQL步骤如下:

proc sql;
  select quote(trim(code)) into :procedures separated by ', ' from procedures;
quit;
Run Code Online (Sandbox Code Playgroud)

code包含值的某些值,如"45.10"和"G0102",因此不能强制转换为数字.该宏包含以下行:

%macro filter_codes(indata, outdata);
  data &outdata;
     set &indata(where = (code in (&procedures)));
  run;
%mend;
Run Code Online (Sandbox Code Playgroud)

但是使用"quote"函数进行双引号时,十进制值会产生问题.

我可以用单引号分隔值吗?

编辑:问题是由于filter_codes宏在一个调用执行步骤(在一系列数据集中)运行的事实引起的,并且在双引号内的宏变量中解析的双引号将结束调用execute.

vas*_*sja 6

试试这个:

proc sql;
  select catt("'", code, "'") into :procedures separated by ', ' from procedures;
quit;
Run Code Online (Sandbox Code Playgroud)

还要修复set语句中的where选项:

set &indata(where=(code in (&procedures)));
Run Code Online (Sandbox Code Playgroud)