0

我(想我)想创建一个包含序列的视图或临时表。该表的目的只是提供制作面板数据集所需的值。我想做的是以编程方式创建这个序列,使用两个时期之间的每个值,比如 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 
4

1 回答 1

2

您可以使用generate_series

select *
from generate_series(7, 42, 7);

它记录在这里

这是编写查询的一种方法:

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 ;
于 2013-08-10T16:05:50.230 回答