SAS intnx季度变化

时间:2016-05-02 19:32:40

标签: date sas sas-macro

抱歉,这可能是一个非常简单的问题,但我似乎无法找到答案。

说,我们想要创建一个包含上个月4个季度的表:

%macro asd;

%let today = %sysfunc(today());

%let quarter_count_back = 4;

%let first_quarter = %sysfunc(intnx(month,&today.,-1));

proc sql;
create table quarters
(
Quarters num informat = date9. format = date9.
);
insert into quarters

%do i = 0 %to -&quarter_count_back.+1 %by -1;

values(%sysfunc(intnx(quarter,&first_quarter.,&i.)))

%end;
;
quit;


run;
%mend asd;
%asd;
run;

此代码工作正常,并创建一个表,从APR2016开始,并按季度返回。但是,如果我更改了' first_quarter'换行-2,-3等......代码始终从JAN2016开始,这对我没有任何意义!例如:

%let first_quarter = %sysfunc(intnx(month,&today.,-2));

似乎合乎逻辑的是,如果我将这一行放在代码中,表格应从MAR2016开始并按季度返回,但事实并非如此,它从JAN2016开始。

关于我在这里做错了什么想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

INTNX函数的默认对齐方式是间隔的开头。如果你想让它回归3个月,那就不同于季度了。您可以通过查看控制对齐的INTNX函数的第四个参数来调整它们。选项包括:

  • 相同
  • 开始
  • 结束

如果您想要三个月,请尝试MONTH.3间隔而不是季度。

http://support.sas.com/documentation/cdl/en/lefunctionsref/63354/HTML/default/viewer.htm#p10v3sa3i4kfxfn1sovhi5xzxh8n.htm