我试图创建一个查询来查找SAS数据集中列表中出现的次数,从上个月开始的过去12个月
我已经创建了下面的宏用于我的WHERE子句:
%let cur_date = %sysfunc(today(), date9.);
%let pre_date2 = %sysfunc(putn(%sysfunc(intnx(month, %sysfunc(today()), -1, End)),%sysfunc(intnx(month, %sysfunc(today()), -12, End)) date9.)));
%put &pre_date4;
如果你能帮我的话,我会很感激的。
感谢您需要两个宏变量:一个用于前一个月的月底,另一个用于上个月前12个月的第一天。
%let last_month = %sysfunc(intnx(month, %sysfunc(today()), -1, E) );
%let last_12_months = %sysfunc(intnx(month, &last_month., -12, B) );
现在您可以使用between
:
where date BETWEEN &last_month. AND &last_12_months.;
的例子:
data have;
do i = -36 to 0;
date = intnx('month', today(), i, 'B');
output;
end;
format date date9.;
drop i;
run;
data want;
set have;
where date BETWEEN &last_month. AND &last_12_months.;
run;
输出:date
01OCT2020
01NOV2020
01DEC2020
01JAN2021
01FEB2021
01MAR2021
01APR2021
01MAY2021
01JUN2021
01JUL2021
01AUG2021
01SEP2021