我想获取一组数据并通过添加基于现有字段的日期行来扩展它。例如,如果我有下表(ID NAME YEAR
1 John 2001
2 Jim 2012
3 Sally 2005
):
John
我想获取这些数据并将其放入另一个表中,但将其扩展为包含一组月份(从那里我可以添加月度信息)。如果我只看第一条记录(ID NAME YEAR MONTH
1 John 2001 01-JAN-2001
1 John 2001 01-FEB-2001
1 John 2001 01-MAR-2001
...
1 John 2001 01-DEC-2001
),我的结果将是:
TABLE1
我有机制来推导我的每月日期,但如何从TABLE2
中提取数据以制作ORA-01427 single-row subquery returns more than one row
。这只是一个快速查询,但当然,我得到了select id,
name,
year,
book_cd,
(SELECT ADD_MONTHS('01-JAN-'|| year, LEVEL - 1)
FROM DUAL CONNECT BY LEVEL <= 12) month
from table1 ;
的预期。只是不确定如何组织查询将这两个部分组合在一起:
{{1}}
我意识到我无法做到这一点,但我不确定如何把这两件放在一起。我计划批量处理记录,因此它不会一次成为一个ID谢谢你的帮助。
答案 0 :(得分:2)
您可以使用交叉联接:
select t.id,
t.name,
t.year,
t.book_cd,
ADD_MONTHS(to_date(t.year || '-01-01', 'YYYY-MM-DD'), m.rn) as mnth
from table1 t
cross join (select rownum - 1 as rn
from dual
connect by rownum <= 12) m