BOM表

需求結果:

如何根據BOM中根據最底層物料882找出最頂層的組件(4個組件),需要顯示四行
uj5u.com熱心網友回復:
CONNECT_BY_ROOTuj5u.com熱心網友回復:
能具體點嗎
uj5u.com熱心網友回復:
select *
from (select level as mat_level, t.組件, connect_by_root t.物料
from table t
start with 物料 = 882
connect by T.物料 = prior T.組件)
where mat_level = 3;
建議自己查一下語法,不難的。學會了也能多掌握點技巧
uj5u.com熱心網友回復:
說明一下,上面寫的MAT_LEVEL=3不是很精確,最好是取MAT_LEVEL最大的,我偷懶了uj5u.com熱心網友回復:
對于表的存盤結構來說,882才是根節點,那四個是葉子節點。“最頂層的組件”如果指的是全部葉子節點。
select *
from (select level as mat_level,
t.組件,
connect_by_root t.物料,
connect_by_isleaf
from table t
start with 物料 = 882
connect by T.物料 = prior T.組件)
where connect_by_isleaf = 1
如果指的是深度最高的節點
select *
from (select level as mat_level,
t.組件,
connect_by_root t.物料,
connect_by_isleaf,
max(level) over() mlv
from table t
start with 物料 = 882
connect by T.物料 = prior T.組件)
where connect_by_isleaf = 1
and mlv = mat_level
uj5u.com熱心網友回復:
從展現的資料來看,樓上的也可以這么理解。問題是這只是部分資料,從業務上BOM結構來看,組件還會有其它物料的,所以connect_by_isleaf不合適轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/63581.html
標籤:基礎和管理
