How to unfold the results of an Oracle query based on the value of a column(如何根据列的值展开Oracle查询的结果)
问题描述
我在 Oracle DB 上有一个包含两列的表.我希望看到每一行重复的次数与存储在第二列中的数字一样多.该表如下所示:
I have a table on a Oracle DB with two columns. I would like to see every row repeated as many times as the number stored in the second column. The table looks like this:
col1 col2
a 2
b 3
c 1
我想写一个返回这个的查询:
I want to write a query that returns this:
col1 col2
a 2
a 2
b 3
b 3
b 3
c 1
所以来自 col2 的值决定了一行重复的次数.有没有简单的方法来实现这一目标?
So the value from col2 dictates the number of times a row is repeated. Is there a simple way to achieve this?
谢谢!
推荐答案
SQL Fiddle
Oracle 11g R2 架构设置:
CREATE TABLE test ( col1, col2 ) AS
SELECT 'a', 2 FROM DUAL
UNION ALL SELECT 'b', 3 FROM DUAL
UNION ALL SELECT 'c', 1 FROM DUAL
查询 1:
SELECT col1,
col2
FROM test t,
TABLE(
CAST(
MULTISET(
SELECT LEVEL
FROM DUAL
CONNECT BY LEVEL <= t.col2
)
AS SYS.ODCINUMBERLIST
)
)
结果:
| COL1 | COL2 |
|------|------|
| a | 2 |
| a | 2 |
| b | 3 |
| b | 3 |
| b | 3 |
| c | 1 |
这篇关于如何根据列的值展开Oracle查询的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何根据列的值展开Oracle查询的结果


- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 更改自动增量起始编号? 2021-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- SQL 临时表问题 2022-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01