首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Proc SQL Teradata传递中使用SAS宏变量

在Proc SQL Teradata传递中使用SAS宏变量
EN

Stack Overflow用户
提问于 2015-07-30 02:52:17
回答 2查看 3.8K关注 0票数 5

我有一条SQL语句,希望使用SAS (9.4)实现自动化。以下语句已在Teradata助手中测试并运行。

代码语言:javascript
复制
select * from TD.DATA where date='2015-06-01'

现在,我希望通过proc传递,并将日期提供给SQL程序,如下所示.

代码语言:javascript
复制
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语句完全相同的输出。然而,我真正想要的是这样做:

代码语言:javascript
复制
%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;

我试过不同的报价组合和不同的日期formats....what我在这里失踪了吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-07-30 06:30:04

试试这个:

代码语言:javascript
复制
%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=%str(%'&input_date%')
);
disconnect from tera;
quit;
票数 1
EN

Stack Overflow用户

发布于 2016-04-04 13:44:52

与日期201501的格式一样,可以生成一个工作的宏变量。

代码语言:javascript
复制
%let input_date = 201506;
%let input_date2=input(put(intnx('month',%sysfunc(inputn(&input_date,yymmn6.)),0,'b'),10.),yymmddd10.)
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 = %BQUOTE('&INPUT_DATE2')
  );
  disconnect from tera;
quit;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31714447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档