如何重复行n次

丛林

我想重复表的行 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>

它有什么作用?

  • 第 1 - 4 行代表您的样本数据
  • CTE temp(第 5 - 11 行)创建了所有这些行;row_number用于对它们进行“排名”,按column_value(将其视为level伪列,如果它离您更近)和a列值(为什么?您的示例输出建议如此)排序
  • 最终查询(第 12 - 15 行)选择结果rn <= 9(如您想获得 9 行)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章