我正在尝试根据今天的日期找到一种方法来选择上一季度最后一天的日期。我的dispoasal有一个日历维度,看起来像下面的观察:
Example of data from the dimension table calendar
以下SAS代码用于获取上一张图片中的数据:
data test_last_day_qtr;
set PRDDMT.TD_ENT_CALENDAR;
TODAY=today();
QTR_TODAY=qtr(TODAY);
SAS_DATE_VALUE=datepart(DT_DATE);
if QTR_TODAY=1;
run;
基于今天是2016/02/25的事实,我应该在31DEC2015:00:00:00作为输出进行观察。
我的第一个想法是通过以下方式仅保留每个季度的最后一次观察:
data test_last_day_qtr;
set PRDDMT.TD_ENT_CALENDAR;
by ID_YEAR ID_QRT ID_MONTH;
if Last.ID_MONTH;
run;
但这并没有给我我希望的结果:
Subset of last observation within every quarter
即使这确实给了我正确的结果,我也不知道如何进步。有其他想法的人吗?
答案 0 :(得分:2)
如果您使用intnx
函数非常简单,该函数用于将日期向前或向后移动给定数量的句点。包含可选的end
关键字以返回季度的最后一天(默认为开头)。
data _null_;
a = intnx('quarter',today(),-1,'end');
format a date9.;
put a;
run;