如何根据列值创建重复行

How to create duplicate rows based on a column values

我需要根据列值复制结果行。 我已经阅读了一些帖子,如 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'。
我怎样才能使这项工作?
谢谢!

您可以使用 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;

Demo