我有一张包含以下数据的表格:
ID SUMMARY_DATE KEYWORD_ID DATA
123 9/1/2014 5 98
我需要使用summary_date + 18个月生成18行,如下所示:
ID SUMMARY_DATE KEYWORD_ID DATA
123 9/1/2014 5 98
123 10/1/2014 5 98
123 11/1/2014 5 98
123 12/1/2014 5 98
...
123 3/1/2016 5 98
我可以使用UNION
来做到这一点,但它会很长。有没有其他方法可以做到这一点?
提前谢谢。
答案 0 :(得分:2)
只需生成一个数字列表并使用add_months()
:
with n as (
select level as m
from dual
connect by level <= 18
)
select t.id, add_months(t.summary_date, n.m, keywork_id, data
from table t cross join
n;