使用宏在SAS代码中动态提取3个月的数据

时间:2017-11-03 01:56:03

标签: sas sas-macro

我是SAS的新手。我需要SAS社区的帮助来优化我正在处理的SAS代码。

目前的代码如下:

%macro sales (outdata, date)

[
Create Table

Select data

%mend sales

]
/* The current code invokes macro manually as */

%Sales (Outdata = Sales_Aug, date = '2017-08-01');

%Sales (Outdata = Sales_Sept, date = '2017-09-01');

%Sales (Outdata = Sales_Oct, date = '2017-10-01');


/* So every month I've to manually enter last 3 months as input to the macro */

有没有办法,我可以让宏调用动态?因此,如果我在11月运行代码,它会选择过去3个月(8月,9月,10月)的数据,如果我在12月运行代码,它会提供9月,10月,11月的数据?

1 个答案:

答案 0 :(得分:0)

不难发现今天的第一天是三个月之前的日期。如果您希望该日期在单引号内并以YYYY-MM-DD样式格式化,那么使用数据步骤可能更容易。

data _null_;
  now=date();
  three_months_ago=intnx('month',now,-3,'b');
  call symputx('date',quote(put(three_months_ago,yymmdd10.),"'"));
run;