我有一个希望使用 SAS EG (9.4) 自动化的 SQL 语句。以下语句已在 Teradata SQL Assistant 中测试并有效。
select * from TD.DATA where date='2015-06-01'
现在我希望通过 proc SQL pass through 来插入它,并将日期提供给 SQL 程序,就像这样......
proc sql;
connect to teradata as tera(user=&tera_user password="&tera_pwd" tdpid=terap);
create table MYDATA as
select * from connection to tera
(
select * from TD.DATA where date='2015-06-01'
);
disconnect from tera;
quit;
上面的代码已经过测试并产生与前面的 SQL 语句完全相同的输出。但是,我真正想要的是做这样的事情:
%let input_date='2015-06-01';
proc sql;
connect to teradata as tera(user=&tera_user password="&tera_pwd" tdpid=terap);
create table MYDATA as
select * from connection to tera
(
select * from TD.DATA where date=&input_date.
);
disconnect from tera;
quit;
我尝试了各种引用和不同日期格式的组合......我在这里错过了什么?谢谢。
最佳答案
您可以使用 %BQUOTE()
宏函数用于解析单引号内的宏变量。
%let input_date = 2015-06-01;
进程sql;
以 tera(user=&tera_user password="&tera_pwd"tdpid=terap) 的身份连接到 teradata;
创建表 MYDATA 作为
select * from connection to tera
(
select * from TD.DATA where date = %BQUOTE('&INPUT_DATE')
);
与 tera 断开连接;
退出;
关于sql - 在 Proc SQL Teradata passthrough 中使用 SAS 宏变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31714447/