当前位置: 首页 > 面试题库 >

Oracle将行重复N次,其中N是列

杨晟
2023-03-14
问题内容

我是Oracle的新手,我正在尝试做一些不寻常的事情。给定此表和数据,我需要选择每一行,并复制DupCount大于1的行。

create table TestTable
(
  Name     VARCHAR(10),
  DupCount NUMBER
)

INSERT INTO TestTable VALUES ('Jane', 1);
INSERT INTO TestTable VALUES ('Mark', 2);
INSERT INTO TestTable VALUES ('Steve', 1);
INSERT INTO TestTable VALUES ('Jeff', 3);

所需结果:

Name        DupCount
---------   -----------
Jane        1
Mark        2
Mark        2
Steve       1
Jeff        3
Jeff        3
Jeff        3

如果通过单个select语句无法做到这一点,那么对存储过程的任何帮助将不胜感激。


问题答案:

您可以使用分层查询来做到这一点:

SQL小提琴

查询1

WITH levels AS (
  SELECT LEVEL AS lvl
  FROM   DUAL
  CONNECT BY LEVEL <= ( SELECT MAX( DupCount ) FROM TestTable )
)
SELECT Name,
       DupCount
FROM   TestTable
       INNER JOIN
       levels
       ON ( lvl <= DupCount )
ORDER BY Name

结果

|  NAME | DUPCOUNT |
|-------|----------|
|  Jane |        1 |
|  Jeff |        3 |
|  Jeff |        3 |
|  Jeff |        3 |
|  Mark |        2 |
|  Mark |        2 |
| Steve |        1 |


 类似资料:
  • 问题内容: 在Perl中,我可以使用以下语法多次重复一个字符: 有没有简单的方法可以在Javascript中完成此操作?我显然可以使用一个函数,但是我想知道是否有任何内置方法或其他一些巧妙的技术。 问题答案: 如今,字符串方法几乎在所有地方都已实现。它不在InternetExplorer中。)因此,除非需要支持较旧的浏览器,否则只需编写以下内容: 在之前,我们使用了此技巧: (请注意,长度为11的

  • 我想把一个整数变成一个金字塔。一、 E数字3: 因此,根据我找到的答案,我做了如下: 但它不起作用,而且是次优的。有没有一种简单的方法可以在同一行中重复整数n次? 也不是很高兴,但似乎我不能只使用System.out.println(int x, int n次)

  • 问题内容: 我正在我的应用程序中使用React / JSX来完成我想要的,Lodash。 我需要根据条件重复元素一定次数。我该怎么办? 这是元素: 我将其分配为: 因此,在这种情况下,我需要重复元素时间。使用Lodash的程序应该是什么? 问题答案: 干得好: 您可能想要向每个元素添加键,以便React不会抱怨缺少key属性: 有关的更多信息,请参见此处:https : //lodash.com/

  • 我正在尝试从Juniper路由器获取配置,但遇到以下问题: 设置好这个之后 它给我带来了这样的东西 问题是我想以这种格式接收该信息: 因此,我希望\n实际上是一个新行,而不仅仅是向我显示“\n”字符串。

  • 问题内容: 我正在使用golang网络应用程序。在这种情况下,我需要迭代HTML行的次数。 我该如何实施? 问题答案: 要在Go模板中重复执行某些操作,您可以使用操作。但是该动作希望可以对其进行迭代,例如切片,数组或映射。 传递零值切片 所以你必须养活它。但是不需要内存的空片就足够了,例如。 模板代码: 测试它: 输出(在Go Playground上尝试): 使用填充的切片 如我们所见,索引从0开

  • 本文向大家介绍Java重复一个字符串n次,包括了Java重复一个字符串n次的使用技巧和注意事项,需要的朋友参考一下 示例 问题:创建一个String包含的n重复项String s。 琐碎的方法将反复地将 String 这会创建n包含1的新字符串实例,以n重复s生成,导致运行时为。O(s.length() * n²) = O(s.length() * (1+2+...+(n-1)+n)) 为了避免这