You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按层级顺序提取BOMHierarchy表的多级层级数据?

深度优先遍历BOM层级解决方案

要实现你需要的深度优先遍历BOM层级顺序(先完整遍历一个分支再处理同层级其他节点),可以借助递归CTE生成层级路径,通过路径排序来达到预期效果。以下是具体SQL实现:

WITH BOMRecursive AS (
    -- 锚点:筛选根节点(这里自动识别无父节点的根,若根节点固定可直接写WHERE Parent = 'Parent1')
    SELECT 
        Parent, 
        Child,
        CAST('/' + Parent + '/' + Child AS VARCHAR(MAX)) AS HierarchyPath
    FROM BOMHierarchy
    WHERE Parent NOT IN (SELECT Child FROM BOMHierarchy)

    UNION ALL

    -- 递归:遍历所有子节点并拼接层级路径
    SELECT 
        bh.Parent, 
        bh.Child,
        br.HierarchyPath + '/' + bh.Child AS HierarchyPath
    FROM BOMHierarchy bh
    INNER JOIN BOMRecursive br ON bh.Parent = br.Child
)
-- 按层级路径排序,实现深度优先遍历
SELECT Parent, Child
FROM BOMRecursive
ORDER BY HierarchyPath;

逻辑说明

  1. 层级路径生成:递归过程中为每个节点拼接完整的层级路径(如/Parent1/Child1/Child3),路径的结构直接反映了节点的层级关系。
  2. 深度优先排序:按HierarchyPath排序时,会优先遍历同一父节点下的完整分支,再回溯处理同层级的其他节点,完全匹配你期望的输出顺序。

如果之前使用CTE未得到正确结果,大概率是缺少了用于控制深度优先顺序的路径排序字段,常规递归默认不会自动按深度优先排列。

内容的提问来源于stack exchange,提问作者Kantarkatax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:16:36