0
源數據表:SQL:如何通過Oracle中的遞歸查詢返回更多記錄?
name count
a 2
b 3
期待:
a1
a2
b1
b2
b3
我想嘗試(但失敗了):
select t.name||level
from t
CONNECT BY LEVEL<=t.count
源數據表:SQL:如何通過Oracle中的遞歸查詢返回更多記錄?
name count
a 2
b 3
期待:
a1
a2
b1
b2
b3
我想嘗試(但失敗了):
select t.name||level
from t
CONNECT BY LEVEL<=t.count
在Oracle 11g中+,你可以使用遞歸查詢:
with cte(name, ind, count) as (
select t.name, 1 as ind, t.count
from t
union all
select cte.name, cte.ind + 1, cte.count
from cte
where cte.ind < cte.count
)
select cte.name || cte.ind
from cte;
我更喜歡遞歸CTE到CONNECT BY
,因爲前者是標準的並且受大多數數據庫支持。
你做得很好,但你應該將group by子句添加到上面的select語句中。
select d from
(select (t.NAME || level)d
from Test t
CONNECT BY LEVEL <= t.CT)
group by d
order by d
效果很好。
返回錯誤:ora-32039 – zhanzezhu
@ zhanzezhu。 。 。哎呀,我忽略了列名。 –
謝謝你的回答。 – zhanzezhu