1

私はオラクルに次のテーブルを持っています。バージョン 9i

Num          count

123              1
345              4
455              3
234              2
542              1

次の出力が得られる選択クエリを作成しようとしています。

123
345
345
345
345
455
455
455
234
234
542

各数値は、count 回表示する必要があります。関数を使用すると、これを達成できますか? 一時テーブルを作成することは許可されていません。

ループシーケンスを使用してから UNION ALL を使用する必要があることは理解していますが、それを達成する方法がわかりません。私はこれを試しました

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

4 に答える 4

3

LEVELこれは、疑似列を使用Correlated Queryして、numカウントを何度も繰り返すために行うことができます...

以下のクエリを試してください

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 に答える