添加间隔作为 SQL 语句的一部分

Adding intervals as part of an SQL statement

希望不大,因为我不确定这是否可能 - 如果是的话,我绝对欠你们的。

我有一个 table start_date、end_date 和时间。假设我有一行 start_date 2015 年 1 月 1 日,end_date 2015 年 12 月 31 日,小时数为 120。 我想生成 12 行的结果,每行 10 小时,月份

类似

|Jan 15|10|
|Feb 15|10|
...
|Dec 15|10|

我想要十个小时,因为我用 120 小时除以月数 (12)。 120 / 12 = 10

我完全可以这样做吗?或者类似的东西?我怀疑我可能必须在代码中而不是在 SQL 中执行 ETL。有没有人对我如何能更接近我想要的东西有任何想法?

谢谢

您只需要一个数字 table。如果你有,你可以这样做:

select add_months(start_date, n.n - 1),
       val / (months_between(start_date, end_date) + 1)
from t join
     numbers n
     on add_months(start_date, n.n - 1) <= end_date;

您可以通过多种方式创建 numbers table。一个简单的方法是这样的:

with numbers as (
      select rownum as n
      from t
      where rownum <= 100
     )