1

我在 oracle 中有下表。版本 9i

Num          count

123              1
345              4
455              3
234              2
542              1

我正在尝试编写一个选择查询,它给我以下输出。

123
345
345
345
345
455
455
455
234
234
542

每个数字应显示其计数次数。如果我使用函数,这可以实现吗?我不允许创建任何临时表。

我知道我必须使用循环序列,然后使用 UNION ALL 但不知道如何实现它。我试过这个

select Num from <table> where count=1
union all
// what fits here?
4

4 回答 4

3

这可以使用伪列LEVELCorrelated Query重复 num count 次来完成......

试试下面的查询

select num from (select distinct num,level,ROWID as RD
from table a
connect by level<= (select count from table b where a.num=b.num))
order by rd;
于 2013-02-19T11:54:39.933 回答
1

试试这个

SELECT A.NUM
FROM Test A
INNER JOIN (SELECT ROWNUM RN FROM dual connect by level < 100) B 
ON B.rn <= A.count
order by A.NUM;

SQL 演示

于 2013-02-19T05:43:04.383 回答
0
WITH cte ("Num", "count") 
AS 
(
    SELECT "Num", "count" FROM TableName
    UNION ALL
    SELECT "Num", "count" - 1  FROM cte WHERE "count" > 1
)
SELECT "Num" 
FROM   cte
ORDER  BY "Num"
于 2013-02-19T05:49:33.650 回答
0

如果您使用的是 11gR2,您可以这样做:

with t(num, i) as
(
  select num, count from tab1 union all
  select num, i-1
  from t
  where i >1
  )    
select num from t
order by num;

这是一个 sqlfiddle 演示

于 2013-02-19T05:49:36.663 回答