对于Oracle来说是新的--我想创建一个Case语句或某种类型的指示符,它可以识别客户机何时被认为是“参与”的。我有以下数据。我想每个月都能数数。
计算月份的所有成员,但也为仍被视为已打开的成员进行累积。我不确定这是否是最好的平台,但我想我会问。我可以在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
发布于 2016-07-22 18:37:26
其中一种方法相对简单:
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;
随着月数的增加,这将不会有很好的性能(除非您的数据非常小)。一个更有表现力的解决方案要复杂一些。
https://stackoverflow.com/questions/38533127
复制相似问题