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

标签 sql oracle oracle10g

我是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 Fiddle

查询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

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

关于sql - Oracle将行重复N次,其中N是列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481112/

相关文章:

sql - “TRIM”不是可识别的内置函数名称

sql - Like 谓词在 SQL 中如何工作?

sql - Postgres PL/pgSQL 函数结果到文件,文件名作为参数

c# - 设计策略 : Query and Update data across 2 different databases

oracle - Oracle 数据库是否应该有多个表空间用于数据存储?

php - 如何从表单提交值

sql - 使用 VBA 运行多个 SQL 查询 (Oracle) - 为什么这么慢?

oracle - Oracle中如何检查表是否为只读?

database - Oracle Text - 索引 BLOB 字段(包含 PDF 数据)

oracle - 使用 plsql 的用户定义的自定义聚合函数