这里拍的很长,因为我不确定这是否可能 - 如果是的话我肯定欠你们的。
我有一个包含start_date,end_date和hours的表。考虑我有2015年1月1日的start_date,2015年12月31日的end_date和120的小时。 我想产生12行的结果,每行10个小时和月份
类似
|Jan 15|10|
|Feb 15|10|
...
|Dec 15|10|
我想要10,因为我将120小时除以月数(12)。 120/12 = 10
我可以这样做吗?或类似的东西?我怀疑我可能不得不在代码中而不是在SQL中执行ETL。有没有人对我如何能够接近我想要的东西有任何想法?
由于
答案 0 :(得分:1)
你只需要一个数字表。如果你有一个,你可以这样做:
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
表。一个简单的方法是这样的:
with numbers as (
select rownum as n
from t
where rownum <= 100
)