我有一個源表(T1):如何代碼從Postgres的轉換到Oracle
ID1 | ID2
----------
1 | 2
1 | 5
4 | 7
7 | 8
9 | 1
我想將數據轉換成這(T2):
ID1 | ID2 | LABEL
------------------
1 | 2 | 1
1 | 5 | 1
4 | 7 | 2
7 | 8 | 2
9 | 1 | 1
我找到了解決爲此在PostgreSQL中:
with
recursive cte(id1, id2) as (
select id1, id2, 1 as level
from t
union all
select t.id1, cte.id2, cte.level + 1
from t join
cte
on t.id2 = cte.id1
)
select id1, id2,
dense_rank() over (order by grp) as label
from (select id1, id2,
least(min(id2) over (partition by id1), min(id1) over (partition by id2)) as grp,
level
from cte
) t
where level = 1;
我想將此代碼轉換爲Oracle。我如何將此代碼從Postgres轉換爲Oracle?
沒有,我只發現我應該使用「CONNECT_BY_ROOT()」,因爲在Oracle中遞歸的。鏈接:http://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL – user2693903
請指定您的Oracle版本。這應該與Oracle 11.2一起工作(因爲在那裏引入了遞歸CTE)。您可能需要使用與「LEVEL」不同的內容,因爲這是一個保留字。 –
是的,它是Oracle 11g R2。你可以幫我嗎?它被稱爲「傳遞關係」轉換。 – user2693903