在 Amazon Redshift 中以每月增量展开 table

Explode a table with a monthly increment in Amazon Redshift

我有样品table:

id start_dt end_dt
100 06/07/2021 30/09/2021

我想获得以下输出

id start_dt end_dt
100 06/07/2021 31/07/2021
100 01/08/2021 30/08/2021
100 01/09/2021 30/09/2021

我已经尝试在 Amazon Redshift 中使用 GENERATE_SERIES(),但是没有给出所需的结果。

现有 table 相当大,所以我可以使用临时 tables,然后在稍后阶段加入另一个 table。

我浏览了其他帖子,但其他提议的解决方案并未完全提供所需的结果/在 Amazon Redshift 上根本不起作用。任何解决此问题的帮助将不胜感激。

传统方法是:

  • 创建一个 Calendar table 每月包含一行,start_date 和 end_date 列
  • 将您的 table 加入 Calendar table,其中 table.start_dt <= calendar.end_dt AND table.end_dt >= calendar.start_dt
  • 这两列是:
    • GREATEST(table.start_dt, calendar.start_dt)
    • LEAST(table.end_dt, calendar.end_dt)