Oracle transfer parent child tree to json


---TREE transfor to JASON
 WITH connect_by_query as ( 
   select ROWNUM as rnum
 ,  ORG_ENTITY_ID
    ,ORG_ENTITY_NAME
    ,PARENT_ORG_ENTITY_ID,HIRARCHY_LEVEL as Lvl
from MS_FLOWDOWN_TMP
start with ORG_ENTITY_ID='*' connect by nocycle prior ORG_ENTITY_ID=PARENT_ORG_ENTITY_ID
)
select
  CASE
    /* the top dog gets a left curly brace to start things off */
    WHEN Lvl = 1 THEN '{'
    /* when the last level is lower (shallower) than the current level, start a "children" array */
    WHEN Lvl - LAG(Lvl) OVER (order by rnum) = 1 THEN ',"isFolder": true,"children" : [{'
    ELSE ',{'
  END
  || ' "title" : "' || ORG_ENTITY_NAME || '" '
  ||',"key":"'||ORG_ENTITY_ID|| '" '
 
 
  /* when the next level lower (shallower) than the current level, close a "children" array */
  || CASE WHEN LEAD(Lvl, 1, 1) OVER (order by rnum) - Lvl <= 0
     THEN '}' || rpad( ' ', 1+ (-2 * (LEAD(Lvl, 1, 1) OVER (order by rnum) - Lvl)), ']}' )
     ELSE NULL
  END as JSON_SNIPPET
from connect_by_query
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值