postgresql 在Postgres中创建时间序列的复杂逻辑

hfyxw5xn  于 2023-01-30  发布在  PostgreSQL
关注(0)|答案(1)|浏览(156)

我有一个如下所示的示例数据集,我想创建一个报告,其格式为开始日期和结束日期之间的所有日期更新值。

    • 输入数据集**
ID      Start                  End                     Value
232      "2022-06-08 18:49:00"  "2022-11-18 08:06:00"   55
456      "2022-10-17 10:24:00"  "2022-12-16 12:52:00"   100

从上面的数据集,我想创建另一个数据集如下。我需要从输入数据集的开始和结束日期生成日期系列,并填充相同的值到所有这些值。任何想法或建议将是有益的。

    • 预期产出**
ID      Date           Value
 232      "2022-06-08"  55
 232      "2022-06-09"  55
 232      "2022-06-10"  55
 232      "2022-06-11"  55
 232      "2022-06-12"  55
 .
 .
 232      "2022-11-17"  55
 232      "2022-11-18"  55
 456      "2022-10-17"  100
 456      "2022-10-18"  100
 456      "2022-10-19"  100
 .
 .
 456      "2022-12-15"  100
 456      "2022-12-16"  100

数据库:Postgres 12

06odsfpq

06odsfpq1#

您可以使用generate_series()

select t.id,
       g.dt::date as date,
       t.value
from the_table t       
  cross join generate_series(t."Start"::date, t."End"::date, interval '1 day') as g(dt)
order by t.id, g.dt

相关问题