sql - 将聚合计数拆分为行

标签 sql oracle

我有这样的约会

CustId  Frequency  Date
------  ---------  -----
C1        2        20-Jan-2015
C2        3        22-Feb-2015

我必须得到如下输出

C1  20-Jan-2015
C1  20-Jan-2015
C2  22-Feb-2015
C2  22-Feb-2015
C2  22-Feb-2015

任何人都可以帮我解决这个问题吗?

提前致谢

最佳答案

您可以使用相关的分层查询来生成额外的行(无需创建额外的表并确保您的频率不会超出这些数字的范围):

SELECT CustID,
       "Date"
FROM   CustomerFrequencies c,
       TABLE(
         CAST(
           MULTISET(
             SELECT LEVEL
             FROM   DUAL
             CONNECT BY LEVEL <= c.Frequency
           )
           AS SYS.ODCINUMBERLIST
         )
       )

关于sql - 将聚合计数拆分为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31988279/

相关文章:

sql - 从 plpgsql 中的执行查询字符串返回值

php - Mysql查询逻辑(类(class)前、后、间)

mysql - 如何将特定值放入 View 中?

javascript - 尝试使用 JQuery 从 Oracle 数据库中选择全部内容时出现 "CLI has stopped working"?

oracle - 使用 sqlloader 将 clob 列添加到 Oracle 数据库

sql - 如何使用一个 SQL 脚本文件创建多个 sqlplus 表

mysql - 如何条件 SQL WHERE

sql - 如何将日期时间值从行转换为列

oracle - Oracle 中的 SQL 配置文件

sql - 优化存储过程循环以提高性能