我有一个有趣的SQL问题.我有一个分层的表格来制作物料清单.与此类似:
ASSEMBLY
---------
parent_part_id
part_id
quantity
Run Code Online (Sandbox Code Playgroud)
我用这样的查询得到了这个结构的层次结构:
SELECT level, part_id, quantity
from assembly
start with parent_part_id = 1
connect by parent_part_id = prior part_id;
Run Code Online (Sandbox Code Playgroud)
输出可能如下所示:
level part_id quantity
----- ------- ---------
1 2 2
2 3 10
1 4 2
2 5 1
3 3 5
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
问题是:如何计算顶级装配所需的每个零件的总数(第1部分)?
按部分对此结果进行分组并对数量求和是不正确的,因为数量应乘以层次结构中当前部分正上方的部分数量,递归地向上到树.
我认为这是一个LAG功能,但无法将其可视化.
编辑:预期结果:
part_id quantity
------- --------
2 2
3 30
4 2
5 2
Run Code Online (Sandbox Code Playgroud)
更多编辑:我通过此查询获得有趣的结果
SELECT rownum, level lvl, part_id, quantity, unit_of_measure
, connect_by_isleaf || sys_connect_by_path(quantity,'*') math
from assembly
start with …Run Code Online (Sandbox Code Playgroud)