您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Oracle分层总和(从叶到根的距离)

Oracle分层总和(从叶到根的距离)

试试这个:

WITH brumba(le_vel,root,node,id_name,root_distance) AS (
  SELECT 1 as le_vel, id_name as root, null as node, id_name, to_number(null) as root_distance  
  FROM MY_TREE WHERE parent_id IS NULL
  UNION ALL
  SELECT b.le_vel + 1, b.root, 
         CASE WHEN 1 < (
                SELECT count(*) FROM MY_TREE t1 WHERE t1.parent_id = t.parent_id
              )
              THEN t.parent_id ELSE b.node
         END,
         t.id_name, coalesce(b.root_distance,0)+t.parent_distance
  FROM MY_TREE t
  JOIN brumba b ON b.id_name = t.parent_id
)
SELECT * FROM brumba

无需使用PL / sql进行“第二种方法”-上面的sql将立即计算所有根节点(parent_id列中为空)的结果。 只需添加一个前缀或者INSERT INTO tablename(col1,col2, ... colN) ...还是CREATE TABLE name AS ...以上面的查询。 上面的演示包含后一个选项的示例CREATE TABLE xxx AS query

Oracle 2022/1/1 18:53:16 有568人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶