Oracle:生成列中值略有不同的行

时间:2014-09-30 01:55:03

标签: sql oracle

我有一张包含以下数据的表格:

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来做到这一点,但它会很长。有没有其他方法可以做到这一点? 提前谢谢。

1 个答案:

答案 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;