SAS宏,将值作为字符串传递给where子句
下面有一个SAS宏不起作用——这个代码段不返回任何值,因为where语句不起作用。有人有什么想法吗?我尝试添加%str,但也不起作用SAS宏,将值作为字符串传递给where子句,sas,sas-macro,Sas,Sas Macro,下面有一个SAS宏不起作用——这个代码段不返回任何值,因为where语句不起作用。有人有什么想法吗?我尝试添加%str,但也不起作用 %macro refreshments(beverage_type=); proc sql; select * where drink_type = '&beverage_type.' ; quit; %mend %refreshments(Sprite); 谢谢。宏变量将不会在单引号中解析。您还缺少FROM子句,宏参数是作为位置(而不是名称=
%macro refreshments(beverage_type=);
proc sql;
select
*
where drink_type = '&beverage_type.'
;
quit;
%mend
%refreshments(Sprite);
谢谢。宏变量将不会在单引号中解析。您还缺少FROM子句,宏参数是作为位置(而不是名称=值对)提供的。请尝试以下操作:
%macro refreshments(beverage_type=);
proc sql;
select *
from YOURTABLE
where drink_type = "&beverage_type";
%mend;
%refreshments(beverage_type=Sprite);
您的SQL缺少“from”子句。您需要指定要查询的表的名称。将来,如果宏无法正常工作,请尝试删除宏代码并将其作为常规SAS代码运行。一旦成功,请重新添加宏代码。您还将单引号更改为双引号,这将产生差异。注意,如果您使用传递到某些DBMS,这将不起作用(在使用双引号括起列名时,不允许以这种方式使用双引号)。例如,见。