我必须获得 1 级部分的子部分的限制列表。某些部件的限制为空,对于那些空部件,我必须查询该部件上的 2 级部件并给出这些 2 级部件的限制的最小值。对于某些 2 级零件,我必须获取其子零件的 MIN(该 2 级零件上的 3 级零件)并将其汇总到 2 级聚合。
你的方法是什么?
在写这篇文章时,我意识到我可以过滤掉被清空的 1 级部分,并使用一个查询来合并它,该查询对被清空的 1 级部分进行聚合,但我想确保没有更好的解决方案。我想我觉得我最初给出的查询有点像鸽子,它给出了整个树(使用 START WITH 和 CONNECT BY 将较低级别的部分连接到较高级别的部分),我试图通过聪明的方式压缩它SQL,但我不能。此外,我希望查询使用 n 级别的聚合,而不是基于我想要复制粘贴我的 UNION 和子查询的次数的有限数量。
这必须在 SQL 中完成。我不能使用 PL/SQL。
为简单起见,请考虑如下架构:
Assembly table
level1_serial | level2_serial
-----------------------------
1234 | null
123 | 1
123 | 2
123 | 3
Limit table
part_serial | limit
-------------------
1234 | 1000
123 | null
1 | 500
2 | 400
3 | 600
在这种情况下,我需要返回两条记录,如下所示
part_serial | limit
-------------------
1234 | 1000
123 | 400