#sas #sas-macro
#sas #sas-макрос
Вопрос:
мне нужно выводить только конкретные даты от текущих до последних 16 лет.
У меня есть один код, в котором перечислены все кварталы .. мне нужно изменить его таким образом, чтобы он возвращал только текущий квартал в каждом из прошлых прослушиваний.
Пример: если текущий квартал = 2020Q2, он должен вернуть (2020Q2,2019Q2,2018Q2 ……..) в определенном формате, который он выводит.
Код выглядит следующим образом:
%let REPORTING_PERIOD_YYYYMMDD =20200630;
%let year_count = 16;
%put amp;year_count;
%let val_date_current = %sysfunc(dhms(%sysfunc(inputn(amp;reporting_period_yyyymmdd., yymmdd8)),0, 0, 0));
%put amp;val_date_current;
%let val_date_first = %sysfunc(dhms(%sysfunc(intnx(year, %sysfunc(datepart(amp;val_date_current.)),-amp;year_count., end)), 0,0, 0));
%put amp;val_date_first;
%let val_date_count = %eval(%sysfunc(intck(dtquarter, amp;val_date_first., amp;val_date_current.)) 1);
%put amp;val_date_count;
data Final;
do val_date_count=1 to amp;val_date_count.;
val_date = intnx('quarter', datepart(amp;val_date_first.), val_date_count-1, 'end');
arr_VAL_DATE = strip(put(val_date, ddmmyy10.));
output;
end;
run;
Спасибо,
Читра
Комментарии:
1. почему вы используете
quarter
intnx
функцию in? вы можете использоватьyear
и в цикле do перейти от 1 к amp;year_count .do val_date_count=1 to amp;year_count.; val_date = intnx('year', datepart(amp;val_date_first.), -val_date_count, 'end');
и вместо ‘end’ вы можете использовать ‘same’, если текущая дата — это то, что вам нужно повторить.