2013-12-10 88 views
0

我有一个宏变量,它具有如下所示的多于1个观察值。宏变量的单引号

%let age = 12,34,56; 
%put &age; 

现在我想用年龄作为我其中参数PROC SQL。

proc sql; 
select * 
from family 
where age in ("&age"); 
quit; 

我用%bquote,报价%,%STR()还有更多,但没有成功呢。

+0

为什么标题说“单引号”,但你(排序的,正确的)用双引号? – Joe

+0

是的。可能需要更改标题 – LonelySoul

回答

3

尝试没有任何引号(我假设年龄是一个数字变量)。

如果年龄是一个字符,那么你可以重写这样的WHERE语句;

where input(age, 8.) in (&age) 

当你写

"&age" 

SAS创建里面的所有值和逗号单个字符串,这不是我们需要对运营商。

已添加。 这是我的代码工作:

%let age = 12,34,56; 
%put &age; 

data family; 
    input age @@; 
    datalines; 
15 16 17 12 33 34 55 56 
; 
run; 

proc sql; 
    select * 
    from family 
    where age in (&age); 
quit; 
+0

这应该这样做,数字上没有引号 –

+0

警告:明显的符号引用AGE未解决。 – LonelySoul

+0

当我们创建宏时,它会自动被视为“字符”。在这种情况下,年龄是字符。我相信“库玛”在这里是一个很大的麻烦。 – LonelySoul