|
本帖最后由 guostong 于 2011-10-26 14:05 编辑
我也来一段:
WITH data AS (
SELECT 'A' name, 2 cnt FROM DUAL
UNION ALL SELECT 'B', 4 FROM DUAL
UNION ALL SELECT 'C', 1 FROM DUAL
),
rdata (name, cnt, lv) as
(
select name, cnt, 1 as lv from data
union all
select name, cnt, lv + 1 as lv from rdata where lv + 1 <= cnt
)
select * from rdata
order by name, lv;
|
|