【发布时间】:2015-10-21 06:14:48
【问题描述】:
我有一个希望使用 SAS EG (9.4) 自动执行的 SQL 语句。以下语句已在 Teradata SQL 助手中测试并有效。
select * from TD.DATA where date='2015-06-01'
现在我希望通过 proc SQL 传递来推动它,并将日期提供给 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;
我尝试了各种引用和不同日期格式的组合......我在这里错过了什么?谢谢。
【问题讨论】:
-
尝试使用
%STR(')而不是单引号 -
奇怪-您提供的代码对我来说看起来不错(在宏变量内分配了单引号)。我针对 mySQL 数据库对其进行了测试,它运行良好。你能再试一次来逗我开心吗,因为我很难相信它不起作用。也许在新的 SAS 会话中进行。