我正在尝试计算每个人在特定目标日期的前一年和后一年的事件(即 event_table 中的行)。例如,假设我有一个人 100,目标日期是 10/01/2012。我想计算 9/30/2011-9/30/2012 和 10/02/2012-9/30/2013 的事件。
我的查询看起来像:
select *
from (
select id, target_date
from subsample_table
) as i
left join (
select id, event_date, count(*) as N
, case when event_date between target_date-365 and target_date-1 then 0
when event_date between target_date+1 and target_date+365 then 1
else 2 end as after
from event_table
group by id, target_date, period
) as h
on i.id = h.id
and i.target_date = h.event_date
输出应该类似于:
id target_date after N
100 10/01/2012 0 1000
100 10/01/2012 1 0
有些人可能在之前或之后(或两者)没有任何事件,在这种情况下最好有零。我不关心730天之外的事件。
任何建议将不胜感激。