有一个表,其中包含某些日期的值:
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
,所以我只能查询它们而不能修改它们。
有人知道这是否可能吗?
答案 0 :(得分:0)
您可以使用数组和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;