我(我想)我想创建一个包含序列的视图或临时表。 此表的目的仅仅是提供制作面板数据集所需的值。 我想要做的是以编程方式创建此序列,使用两个句点(如0和365)之间的每个值,间隔为7(例如,制作每周面板)。 以下是如何进行手动"手动插入每个截止日期。
create table time_periods (day_cutoff int);
insert into time_periods values (7);
insert into time_periods values (14);
insert into time_periods values (28);
insert into time_periods values (35);
insert into time_periods values (42);
然后将此表用作(在billing_records
的基础表上进行完整的笛卡尔联接,其中包含进行结算的临时实例。
select
buyer
, seller
, day_cutoff
, sum(case when billing_day < day_cutoff
then amount
else 0.0 end) as cumulative_spend
from time_periods
left join billing_records
on 1 = 1
group by buyer, seller, day_cutoff
答案 0 :(得分:2)
您可以使用generate_series
:
select *
from generate_series(7, 42, 7);
记录在案here。
以下是编写查询的一种方法:
select buyer, seller, day_cutoff,
sum(case when br.billing_day < day_cutoff then amount else 0.0 end) as cumulative_spend
from billing_records br cross join
generate_series(7, 42, 7) as day_cutoff
group by buyer, seller, day_cutoff ;