【发布时间】:2016-07-07 18:13:25
【问题描述】:
我想创建以下 Proc SQL 语句:
%macro query(from_table, return_table, variable);
Proc sql;
create table &return_table as
select
*
from &from_table
where &variable contains " 0000 "
or &variable contains " 3023 "
or &variable contains " 9999 "
or &variable contains " 5555 "
...
;
run;
%mend;
我有一个包含 400 个 4 位代码观察值的数据文件。如何遍历数据文件并创建自定义 where 子句。我不想输入"or &variable contains " xxxx " " 400 次。
我正在考虑使用另一个宏来创建一个带有 do 循环的文本变量,以遍历 400 个观察值,但似乎无法让它发挥作用。我想要类似的东西
%macro append_string(table);
%Let string = ;
%Do I=1 %To 400;
%Let string = &string cat("or variable contains" , table[I]);
%end;
%mend;
解决这个问题的正确方法是什么?我试过用很多不同的方式编写 append_string 宏,但没有任何效果。
【问题讨论】:
-
我有一个包含 400 个 4 位代码观察值的数据文件...那么为什么要在
WHERE子句中包含所有 400 个代码?一般WHERE作为子集的过滤器,