首页 > 解决方案 > 以两种不同的格式为每个订阅者查找最小/最旧的创建日期 SAS

问题描述

我有一个呼叫日志数据集,该数据集对一组多次呼叫的订户进行,每次呼叫尝试都在一个新行上。我需要根据第一次联系订阅者的时间来分析一些数据,但我无法提取最短联系日期。我尝试了一些事情,但我创建的唯一成功输出只是输出已经链接到线路的创建日期(这是我需要为每个订户的呼叫集获取最小值的变量),而不是最小的在该订阅者的数据集中创建日期。

我的理想结果是这样的(其中 min_date/min_month 是我要创建的变量):

订户 ID | 创建日期 | 最小日期 | Min_month

123456 | 2020 年 1 月 1 日 | 2020 年 1 月 1 日 | 2020年1月
123456 | 2020 年 3 月 5 日 | 2020 年 1 月 1 日 | 2020年1月

我对输出格式也有一些问题。当我得到输出时,我得到了以某种顺序数字代码格式化的日期?例如,我会得到类似“22095”的东西,而不是任何类型的实际日期。

我用来提取最小日期的代码:


create table  min_dates as 

select 
sub_id,
min2.min_date2


from (select 'Subscriber ID'n as sub_id, min('Create Date'n) as  min_date2 from work.min) as min2

inner join work.min as min1 on min1.'Subscriber ID'n = min2.sub_id;



quit;

我认为这可能有效,但由于格式问题,我无法真正说出。当我将这个子表重新连接到代码末尾的主数据提取时,所有值也都丢失了。如果它是正确的,我需要从这段代码中再做两件事:

但如果它是错误的并且只是给我同一行的日期,我也需要修复它。

任何帮助表示赞赏。

标签: datesasdate-formattingminimumproc-sql

解决方案


SAS 日期值只是具有特殊含义的数字(自 以来的天数01jan1960)。

将格式应用于所选变量,它将显示为人类可读的日期。

select 
  sub_id,
  min2.min_date2 format=DATE9.
from
  ...

该变量最初是计算出来的,没有应用格式。这就是为什么您的原始代码仅将日期值显示为数字的原因。


推荐阅读