我在postgress有一张简单的桌子。
它有开始日期,结束日期和总音量
示例2016年1月1日,2016年12月31日和360,0000
我需要分成以下输出
1 Jan 2016 360000/366
2 Jan 2016 360000/366
...
..
..
31 Dec 2016 360000/366
366是2016年的天数
需要将输出发送到另一个表。最简单的方法是什么?有些跨越20 - 30年。
提前谢谢。
答案 0 :(得分:1)
您可以使用generate_series()
:
with const as (
select '2016-01-01'::date as date_start, '2016-12-31'::date as date_end, 360000 as amt
)
select g.dte, amt / (date_end - date_start + 1.0)
from const, lateral
generate_series(date_start, date_end, interval '1 day') as g(dte) ;
Postgres的所有版本都不支持横向连接,因此您也可以这样做:
select generate_series(date_start, date_end, interval '1 day') as dte,
amt / (date_end - date_start + 1.0)
from const