如果cdate在Activationdt和next_activationdt之内,我需要按客户总结从2018-1-1到今天的特定产品。当next_activationdt为空时,表示它仍在使用中,没有被取消或更改。
例如2018-1-1,Mary和Alan使用的是产品A。
我想不出一种将所有日期放在一起的好方法。
我需要在SQL工作台上运行代码,以从AWS Redshift数据库中提取数据。
答案 0 :(得分:0)
您需要一种生成日期的方法。也许您有一个日历表,或者可以使用类似以下的内容:
with dates as (
select dateadd(day, row_number() over (), '2018-01-01'::date) as dte
from t
limit 365 -- assumes table has at least 365 rows
)
select d.dte,
sum( (product = 'A')::int ) as num_a,
sum( (product = 'B')::int ) as num_b,
sum( (product = 'C')::int ) as num_c,
sum( (product = 'D')::int ) as num_d
from dates d left join
t
on d.dte >= t.activationdate and
(d.dte < t.nextactivationdate or t.nextactivationdate is null)
group by d.dte
order by d.dte;