案例陈述 - Oracle v.11

时间:2016-07-22 18:27:29

标签: sql oracle oracle11g

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

1 个答案:

答案 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;

随着月数的增加,这将没有很好的表现(除非您的数据非常小)。更高效的解决方案有点复杂。