postgresql - How to convert code from Postgres to Oracle -
i have source table (t1):
id1 | id2 ---------- 1 | 2 1 | 5 4 | 7 7 | 8 9 | 1 i want convert data (t2):
id1 | id2 | label ------------------ 1 | 2 | 1 1 | 5 | 1 4 | 7 | 2 7 | 8 | 2 9 | 1 | 1 i found solution in postgresql:
with recursive cte(id1, id2) ( select id1, id2, 1 level t union select t.id1, cte.id2, cte.level + 1 t join cte on t.id2 = cte.id1 ) select id1, id2, dense_rank() on (order grp) label (select id1, id2, least(min(id2) on (partition id1), min(id1) on (partition id2)) grp, level cte ) t level = 1; i want convert code oracle. how can convert code postgres oracle?
oracle 11.2 supports recursive ctes. deviates standard in recursive keyword not required (actually: must not used). if remove recursive keyword , definition of cte columns right following should work. need use different level reserved word either.
with cte (id1, id2, lvl) ( select id1, id2, 1 lvl t union select t.id1, cte.id2, cte.lvl + 1 t join cte on t.id2 = cte.id1 ) select id1, id2, dense_rank() on (order grp) label ( select id1, id2, least(min(id2) on (partition id1), min(id1) on (partition id2)) grp, lvl cte ) t lvl = 1; here sqlfiddle example: http://sqlfiddle.com/#!4/deeb2/3
however doubt original query correct not have "starting condition" recursive cte. first part of union retrieves all rows of table. there should condition restrict "roots" of hierarchy unless i'm mis-understanding purpose of query.
a recursive cte can replaced connect by query, in case be:
select id1, id2, level lvl t connect prior id1 = id2; you can combine orginal query:
with cte (id1, id2, lvl) ( select id1, id2, level lvl t connect prior id1 = id2 ) select id1, id2, dense_rank() on (order grp) label ( select id1, id2, least(min(id2) on (partition id1), min(id1) on (partition id2)) grp, lvl cte ) t lvl = 1; although think should same, seems hierarchy traversed in different order. because recursive cte breadth first , connect by depth first recursion (or other way round).
sqlfiddle example second version: http://sqlfiddle.com/#!4/deeb2/4
Comments
Post a Comment