我想重复表的行 n 次。
假设我有一张如下表
表1
A B C
-----
1 2 3
2 3 4
并且 n = 9
我想得到如下结果
1 2 3
2 3 4
1 2 3
2 3 4
1 2 3
2 3 4
1 2 3
2 3 4
1 2 3
我尝试按级别连接,但没有得到预期的结果。
像这样?
SQL> with test (a, b, c) as
2 (select 1, 2, 3 from dual union all
3 select 2, 3, 4 from dual
4 ),
5 temp as
6 (select a, b, c,
7 row_number() over (order by column_value, a) rn
8 from test cross join table(cast(multiset(select level from dual
9 connect by level <= 9
10 ) as sys.odcinumberlist))
11 )
12 select a, b, c
13 from temp
14 where rn <= 9
15 order by rn ;
A B C
---------- ---------- ----------
1 2 3
2 3 4
1 2 3
2 3 4
1 2 3
2 3 4
1 2 3
2 3 4
1 2 3
9 rows selected.
SQL>
它有什么作用?
temp
(第 5 - 11 行)创建了所有这些行;row_number
用于对它们进行“排名”,按column_value
(将其视为level
伪列,如果它离您更近)和a
列值(为什么?您的示例输出建议如此)排序rn <= 9
(如您想获得 9 行)本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句