Функция CATS () будет использовать символ, назначенный параметру MISSING
, для пропуска числовых значений. Вместо этого вы можете изменить отсутствующий параметр на пробел, и тогда периоды не будут отображаться.
Но из комментариев к некоторым другим ответам кажется, что ваша настоящая проблема в том, что вы имеете дело с переменной DATETIME, а не с переменной DATE. SAS сохраняет значения DATE как количество дней с 1960 года, а значения DATETIME - количество секунд. Такие функции, как MONTH () и YEAR () не будут работать правильно, если задано число в секундах вместо дней.
Также нет необходимости извлекать месяц и год и вставлять их вместе, поскольку в SAS уже есть форматы, которые будут возвращать эту строку для вас. Например, вы можете использовать формат MONYY
(или DTMONYY
для значений даты и времени).
create table COUNTS AS
select put(submittedon,dtmonyy.) as month_year
, count( distinct APP_ID) AS COUNT
from APP
GROUP BY MONTH_YEAR
;
Обратите внимание, что вы можете использовать формат, который помещает ГОД перед МЕСЯЦЕМ, чтобы значения вашей новой символьной переменной сортировались правильно.
create table COUNTS AS
select substr(put(datepart(submittedon),yymmdds10.),1,7) as month_year
, count( distinct APP_ID) AS COUNT
from APP
GROUP BY MONTH_YEAR
;