У меня есть набор данных, структурированный следующим образом:
CLIENT_ID Segment Yearmonth
XXXX A 201305
XXXX A 201306
XXXX B 201307
XXXX B 201308
XXXX C 201309
XXXX A 201310
YYYY D 201306
YYYY D 201307
YYYY C 201308
YYYY D 201309
ZZZZ E 201309
ZZZZ E 201309
ZZZZ E 201309
Это результат, который я пытаюсь получить
CLIENT_ID Segment New_sequencing_Variable
XXXX A 1
XXXX B 2
XXXX C 3
XXXX A 4
YYYY D 1
YYYY C 2
YYYY D 3
ZZZZ E 1
Код, который у меня есть до сих пор:
HISTORICAL_SEGMENTS2 HISTORICAL_SEGMENTS3 ;
set GENERAL.HISTORICAL_SEGMENTS ;
by Client_ID ;
if first.Client_ID then count = 0 ;
count + 1 ;
output HISTORICAL_SEGMENTS2 ; *output every record;
if first.Client_ID then output HISTORICAL_SEGMENTS3 ; *output first of each group;
run;
мне нужно что-то вроде:
if previous.segment <> current.segment then output HISTORICAL_SEGMENTS3
Однако я могу получить первый идентификатор клиента, сегмент и переменную последовательности, но только первый идентификатор клиента и сегмент рядом с ним в выходной таблице HISTORICAL_SEGMENTS3, но только первую запись.
Как включить логику, которая выводится при группировке по client_id и yearmonth, в основном выводит строку строки каждый раз, когда сегмент отличается от предыдущего сегмента Yearmonths