sql - 在 Proc SQL Teradata passthrough 中使用 SAS 宏变量

标签 sql sas

我有一个希望使用 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/

相关文章:

c# - 检索以前的记录并存储到文本框

oracle - SAS 到 Oracle ODBC - 将 SAS 表传递到数据库

variables - SAS:如何在 IML 语句之间传输变量?

sql - Postgresql句子性能

mysql - 查找 MYSQL 数据库中的顶级条目

mysql - 没有 JOIN 的 SQL 查询

sas - 如何防止 CATx 函数计算表达式

indexing - 为什么 SAS 不使用我的索引?

sql - SAS、proc Summary 中哪个统计计算速度更快?

MySQL从包含多次付款的用户列表的表中选择最新付款