извините, наверное, очень простой вопрос, но я не могу найти на него ответ.
Скажем, мы хотим создать таблицу, содержащую 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;
Этот код отлично работает и создает таблицу, которая начинается с апреля 2016 года и возвращается во времени на квартал. Однако, если я изменю число в строке «first_quarter» на -2, -3 и т. д., код всегда начинается с JAN2016, что для меня просто не имеет никакого смысла! Например:
%let first_quarter = %sysfunc(intnx(month,&today.,-2));
Кажется логичным, что если я помещу эту строку в код, таблица должна начинаться с МАР 2016 и возвращаться на квартал, но это не так, она начинается с ЯНВ 2016.
Любые идеи о том, что я делаю неправильно здесь?
Спасибо!
's'
или то же самое. - person Reeza   schedule 02.05.2016