В этом примере, давайте предположим, что Алекс помещен один заказ в 2013 году и еще один заказ в 2015 году Боб помещен только один заказ в 2013 году Давайте создадим некоторые данные:
data have;
format id $4. first_order Order date9.;
id = 'Alex'; first_order = '01JAN2013'd; Order = '23JAN2015'd; output;
id = 'Alex'; first_order = '01JAN2013'd; Order = '03APR2013'd; output;
id = 'Bob'; first_order = '01JAN2013'd; Order = '01JAN2013'd; output;
run;
макросоци- ниже может использоваться для получения статуса клиента в любой конкретный год.
%macro Active(year=);
proc sql;
create table CustomerStatus as
select id,
case when max(year(Order)) = &year then 'Active'
else 'Inactive' end as Status_in_&year length=8
from have
group by id
order by id;
create table want as
select have.id, have.first_order, have.Order, CustomerStatus.Status_in_&year
from have inner join CustomerStatus on have.id = CustomerStatus.id
order by CustomerStatus.id;
quit;
%mend Active;
%Active(year=2015);
В таблице CustomerStatus мы получаем год последнего заказа для всех клиентов. Если это соответствует году заказа, статус клиента активен. Наконец, статус объединяется с таблицей Orders.
Вы хотите, чтобы столбец 'status' отображался активным только для дат 2015 года? –
Какова сложность, помимо назначения переменной? – Reeza
вы можете использовать INTNX, DATDIF, ... –