Oracle新手 - 我想创建一个案例陈述或某些分类的指示,可以识别客户被视为“参与”的时间。我有以下数据。我想能够计算每个月。
计算当月的所有会员,但也会为仍被视为开放的会员累积。我不确定这是否是最好的平台,但我想我会问。我可以在SQL之外求和。
201607 = 4 (Memberid: 1-3 & 5)
201606 = 2 (Memberid: 4 & 5)
Total records below = 5
Start_Year_Month EndDate ID Status
201607 1 OPEN
201607 2 OPEN
201607 201607 3 CLOSED
201606 201606 4 CLOSED
201606 5 OPEN
答案 0 :(得分:1)
这样做的一种方法相对简单:
select m.mon, count(t.id)
from (select distinct start_year_month as mon from t) m join
t
on m.mon >= t.start_year_month and
(m.mon <= t.enddate or t.enddate is null)
group by m.mon;
随着月数的增加,这将没有很好的表现(除非您的数据非常小)。更高效的解决方案有点复杂。