如何定义时间序列的最新发布时间

时间:2014-08-12 13:25:44

标签: sql sas

我有一百个时间序列。

这些时间序列是欧洲主要机构在每个季度结束时或每个月末发布的其他时间序列中的数十万个。

该机构没有公布时间序列的发布日期,因为它过于繁琐。然而,他们公布了每个系列的及时性。

要获得时间序列的估计发布日期,您需要在季度结束时或月末,并为其添加一定的天数。

一个例子是

Serie A: Q1 2014 = end of January(31/01/2014) plus 50 days (x represents the number of days) = 22/03/2014
Serie B: M4 2014 = end of April (30/04/2014) plus 40 days = 09/06/2014
Serie C: M2 2014 = end of February (28/02/2014) plus 57 days = 26/04/2014
Serie D: Q4 2013 = end of December (31/12/2013) plus 25 days = 25/01/2014

我创建了一个名为dico的词典

     serie_name latest_release_time available
     serie A    22/03/2014          . 
     serie B    09/06/2014          .
     serie C    26/04/2014          . 
     serie D    25/01/2014          .

假设今天的日期是2014年7月8日。

我的目标是选择最新系列。在这个例子中,它将是乙级联赛,因为它最接近08/07/2014

我认为SAS或SQL中没有一个功能允许您检查最近的日期,除非您说这样做

proc sql;
update dico set available="yes" where intnx('month',release_date,1) > date();
quit;

我说错了吗?

欢呼帮助。

1 个答案:

答案 0 :(得分:0)

这就是我想你要找的东西:

您可以在SQL中使用内部选择。还有其他方法可以做到,但这很容易理解。

data test;
x = 0;
format date date9.;
do date = "01JAN2013"d to "31DEC2014"d by 4;
   do i=1 to 3;
      x = x + 1;
      output;
   end;
end;
run; 

proc sql noprint;
create table temp as
select date, i, x
from test
where date = (
    select min(date) from test where date >= today()
);
quit;

首先,我生成一些假数据。然后我使用SQL只获得满足我的标准(date >= today())的DATE变量的第一个记录。

如果这不是您想要的,请告诉我们。