【发布时间】:2021-03-15 23:34:10
【问题描述】:
我有一个如下所示的表格,我想使用开始日期和结束日期将每一行的值平均分配到每个季度的 3 个月到开始日期和结束日期之间的所有季度(最后两列)。
我熟悉 Postgres 中的生成序列和间隔,但我很难得到我想要的。
我的表有一个 ID 列将行组合在一起,一个 quarter 列指示 ID 的行引用哪个季度,一个 value 列是整个季度的值(以及每个日期范围内的季度),以及指示日期范围的 start_date 和 end_date 列。这是一个示例:
ID quarter value start_date end_date
1 2 152 2019-11-07 2050-12-30
1 1 785 2019-11-07 2050-12-30
2 2 152 2019-03-05 2050-12-30
2 1 785 2019-03-05 2050-12-30
3 4 41 2018-06-12 2050-12-30
3 3 50 2018-06-12 2050-12-30
3 2 88 2018-06-12 2050-12-30
3 1 29 2018-06-12 2050-12-30
4 2 1607 2018-12-17 2050-12-30
4 1 4803 2018-12-17 2050-12-30
这是我想要的输出(ID 1):
ID quarter value start_date end_date
1 2 152/3 2020-04-01 2020-07-01
1 1 785/3 2020-01-01 2020-04-01
1 2 152/3 2021-04-01 2021-07-01
1 1 785/3 2021-01-01 2021-04-01
start_date 在输出中将是第一个表的下一个季度。我需要从第一个表的start_date 到end_date 生成系列。
【问题讨论】:
标签: sql postgresql date datetime generate-series