有一个表,其中包含某些日期的值:
date | value
-------------------------
2019-01-01 | 50
2019-01-03 | 100
2019-01-06 | 150
2019-01-08 | 20
但我希望做的是创建一个时间序列,从第一个日期到最后一个日期有一个运行总和,因此:
date | value
-------------------------
2019-01-01 | 50
2019-01-02 | 50
2019-01-03 | 150 (+100)
2019-01-04 | 150
2019-01-05 | 150
2019-01-06 | 300 (+150)
2019-01-07 | 300
2019-01-08 | 320 (+20)
唯一的约束是所有表都是read only
的,所以我只能查询它们而不能修改它们。
有谁知道这是否可能?
您可以使用数组和unnest()
生成日期。 其余是left join
和累计总和:
select dates.dte,
sum(t.value) over (order by dates.dte)
from (values (sequence(from_iso86001_date('2019-01-01'),
from_iso86001_date('2019-01-08'),
interval '1' day
)
)
) v(date_array) cross join
unnest(v.date_array) dates(dte) left join
t
on t.date = dates.dte;