1

我有一个数据集,其中存储要在其他地方的 IN 子句中使用的所有值。

DATA INVALUES;
INPUT INVAL;
DATALINES;
1
2
3
;
RUN;

我必须使用另一个数据集中的值,如下所示。

DATA OUTPUT;
SET INPUT;
IF A IN ( --- INVAL  values from dataset INVALUES ----);
;
RUN;

这可以以任何方式完成吗?

4

2 回答 2

1

您可以为此使用宏变量。

/* Put the inval values in a comma separated macro variable  */
proc sql;
select inval into:inval separated by ","
from invalues;

/* prints the macro variable in the log */
%put &inval; /* 1,2,3 */

/* use the macrovariable in the IF statement */
DATA OUTPUT;
SET INPUT;
IF A IN &inval;
RUN;
于 2013-10-30T08:16:51.537 回答
0

一种更简洁的方法是在 SQL 中使用子查询,无需担心数据类型/引用。

过程 sql ;
  创建表输出为
  选择 *
  从输入
  其中 a in(select distinct inval from invalues) ;
辞职 ;
于 2013-10-30T13:41:50.753 回答