我需要根据列值复制结果行。
我已经阅读了this之类的几篇文章,但是由于无法翻译,因此可以在我的oracle数据库上使用。
我有两张桌子。第一个存储文本值,第二个定义重复次数。
CREATE TABLE TestTable1 (
id NUMBER(9),
Text VARCHAR2(10)
);
CREATE TABLE TestTable2 (
id NUMBER(9),
Repeat NUMBER(9)
);
insert into TestTable1(
select 101, 'ABC' from dual union all
select 202, 'DEF' from dual union all
select 303, 'GHI' from dual);
insert into TestTable2(
select 101, 2 from dual union all
select 202, 13 from dual union all
select 303, 24 from dual);
所以当我像这样加入桌子
select T1.ID, T1.TEXT, T2.REPEAT
from TestTable1 t1
join TestTable2 t2
on T1.ID = T2.ID;
我得到这个结果
ID TEXT REPEAT
---------------------------
101 ABC 2
202 DEF 13
303 GHI 24
但是我需要2行文本“ ABC”,13行文本“ DEF”和24行文本“ GHI”。
我该怎么做?
谢谢!
答案 0 :(得分:1)
您可以使用Hierarchical Query
select T1.ID, T1.TEXT
from TestTable1 t1
join TestTable2 t2
on T1.ID = T2.ID
connect by level <= T2.repeat
and prior T1.ID = T1.ID
and prior sys_guid() is not null;