HANA Hierarchy 获取节点路径

HANA Hierarchy没有提供sys_connect_by_path的功能,只有通过程获取:

DO
BEGIN
  allhr = 
  		select HIERARCHY_RANK id, HIERARCHY_PARENT_RANK pid, parent_id item, node_id node from (SELECT HIERARCHY_RANK,HIERARCHY_TREE_SIZE,HIERARCHY_PARENT_RANK,HIERARCHY_ROOT_RANK,HIERARCHY_LEVEL,HIERARCHY_IS_CYCLE,HIERARCHY_IS_ORPHAN,PARENT_ID,NODE_ID
			FROM hierarchy (
				SOURCE (SELECT name parent_id,idnrk node_id FROM pcdw.ecc_bom a WHERE WERKS ='L070')
				START WHERE name IN ('7D04CTO1WW','7X18CTO1WW')
			));
  curpath = select id,pid,item,node,item root,item||','||node path from :allhr a where pid=0;
  
  while (select count(*)  from :curpath where id is not null) >0 do
  curpath = select b.id,b.pid,b.item,b.node,a.root,ifnull(a.path||','||b.node,a.path) as path 
  		    from :curpath a left join :allhr b on a.id=b.pid and a.node = b.item;
  
  end while;
  select root,path from :curpath;
END;

找到个新方法:

WITH t_demo AS (
SELECT '1' p,'1.1' c FROM dummy UNION 
SELECT '1' p,'1.2' c FROM dummy UNION 
SELECT '1' p,'1.3' c FROM dummy UNION 
SELECT '1.2' p,'1.2.1' c FROM dummy UNION 
SELECT '2' p,'2.1' c FROM dummy UNION 
SELECT '2' p,'2.2' c FROM dummy UNION 
SELECT '2' p,'2.3' c FROM dummy UNION 
SELECT '2.1' p,'2.1.1' c FROM dummy 
)
, h AS ( SELECT * FROM HIERARCHY (
        SOURCE ( SELECT c node_id, p parent_id FROM t_demo ORDER BY c )
        START WHERE p = '2' ) )
SELECT
    start_id AS node_id,
    STRING_AGG(node_id, '/' ORDER BY hierarchy_rank) AS path
FROM
    HIERARCHY_ANCESTORS(
        SOURCE h 
        START ( SELECT parent_id AS start_id, hierarchy_rank AS start_rank FROM h )
)
GROUP BY
    start_id;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

24K老游

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值