2014-09-30 34 views
0

我有一个表数据象下面这样:甲骨文:生成略有不同的值的行一列

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这样做,但它会这么长。有没有其他方法可以做到这一点? 在此先感谢。

回答

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;