Пример кода, который вы показываете, не читает CUST_THIS_MONTH_SPEND
правильно, вы можете захотеть
@17 CUST_THIS_MONTH_SPEND best7.
вместо
@22 CUST_THIS_MONTH_SPEND 7.5
Вы можете сосчитать количество месяцев для каждой группы,с 0
расходами - или незаписанными расходами, выполненными в течение 3 месяцев до целевого месяца, следующим образом:
- ограничьте строки теми, которые в течение 3 месяцев до
- , суммируют логическую оценку для подсчетаизвестные нули
- подсчитывают несуществующие месяцы, вычитая количество существующих строк (
count(*)
) из ожидаемых строк (3
)
Пример:
DATA have;
format groupid 8. as_of_dt date9.;
input groupid as_of_dt DATE9. spending; DATALINES;
10970 01OCT2014 0
10970 01NOV2014 0
10970 01JAN2015 0
10970 01FEB2015 0
10970 01MAR2015 0
10970 01APR2015 20
10970 01MAY2015 800
;
RUN;
%LET month = "01FEB2015"d;
proc sql;
create table want as
select
groupid,
sum(spending = 0) + 3 - count(*) as zeromissingCount,
&date as ending_month format=monyy7.
from have
where intck('month', &date, as_of_dt) between -2 and 0
group by groupid
;