0

The source tables are

TABLE 1     
ID  NAME    
X1  ssnnmm  

TABLE 2     
ID  NAME    LEVEL
Z1  ss      1
Z2  nn      2
Z3  mm      3

I want the result as below

RESULT      
CHILD_ID    PARENT_ID   
X1          Z1  
Z1          Z2  
Z2          Z3  
Z3          NULL

which is based on level column of TABLE 2

Thanks in advance.

E.Manju
  • 19
  • 6

1 Answers1

1

This returns the results that you specify:

with t1 as (
      select 'X1'::text as id, 'ssnnmm' as name
     ),
     t2 as (
      select 'Z1'::text as id, 'ss' as name, 1::int as level union all
      select 'Z2' as id, 'nn' as name, 2::int as level union all
      select 'Z3' as id, 'mm' as name, 3::int as level
     )
select t2.id, t2p.id
from t2 left join
     t2 t2p
     on t2p.level = t2.level + 1
union all
select t1.id, t2.id
from t1  join
     t2
     on t2.level = 1;
Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786