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

求可汇总多层装配结构零件总数量的ParentChild表SQL查询语句

解决方案

通用递归CTE方案(支持PostgreSQL、MySQL 8.0+、SQL Server 2008+等)

利用递归公共表表达式(CTE)遍历整个装配树,逐层计算零件的累计数量:

WITH RECURSIVE assembly_tree AS (
    -- 锚点:获取根装配体A1的直接子项
    SELECT 
        Parent,
        Child,
        Quantity AS total_qty
    FROM ParentChild
    WHERE Parent = 'A1'

    UNION ALL

    -- 递归遍历子装配体,累计计算数量
    SELECT 
        pc.Parent,
        pc.Child,
        at.total_qty * pc.Quantity AS total_qty
    FROM assembly_tree at
    JOIN ParentChild pc ON at.Child = pc.Parent
)
-- 筛选零件并汇总总数量,格式化输出
SELECT 
    CONCAT(SUM(total_qty), 'x ', Child) AS part_summary
FROM assembly_tree
WHERE Child LIKE 'P%'
GROUP BY Child
ORDER BY Child;

逻辑说明

  1. 锚点成员:先取出A1的直接子节点,初始数量为表中记录的Quantity。
  2. 递归成员:将已遍历到的装配体作为父节点,关联其下的子项,通过父节点累计数量 × 当前子项数量计算出子项的累计数量,直到遍历完所有层级。
  3. 最终汇总:筛选出所有零件(通过Child LIKE 'P%'判断),按零件分组求和,格式化为数量x 零件名的样式。

执行结果

运行上述查询后,会得到符合预期的结果:

part_summary
------------
8x P1
1x P2
2x P3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:22:32