BOM 结构如图

-- 1DH142-022 (DRIVE)

-- 100729421  (PCBA)

-- 100764148  (HDA)

-- 100687050 (VCM)

-- 100701274 (COVER)

-- 100701275 (HSA)

-- 100787293

-- 100709989 (VCM)

-- 100743069 (COVER)

-- 100766409 (HSA)

1. ORACLE 递归查询根节点下所有子节点清单

select parent_assembly, child_component, site_name, level
From scpdata.scp_pbom
start with parent_assembly = '1DH142-022'
connect by prior child_component = parent_assembly;
 
2. ORACLE 从子节点开始向上递归遍历所有父节点
select parent_assembly, child_component, site_name, level
From scpdata.scp_pbom
start with child_component = ''
connect by prior parent_assembly = child_component
and prior site_name = site_name;

3. 查询当前节点的叔叔伯父节点(兄弟父节点)

with bom as
(select parent_assembly,
child_component,
site_name,
prior child_component prev_child,
level le
from scpdata.scp_pbom
start with parent_assembly = '1DH142-022'
connect by prior child_component = parent_assembly)
select distinct b.*
From bom a
left join bom b
on a.child_component = ''
where b.le = (a.le - 1)
and b.child_component not in (a.parent_assembly);

4. 查询族兄

with bom as
(select parent_assembly,
child_component,
site_name,
prior child_component prev_child,
level le
from scpdata.scp_pbom
start with parent_assembly = '1DH142-022'
connect by prior child_component = parent_assembly)
select distinct b.*
From bom a
left join bom b
on a.child_component = ''
where b.le = a.le
and b.child_component <> a.child_component;

5. 格式化层级

select lpad(' ', level*2, ' ') || child_component, site_name, level
From scpdata.scp_pbom
start with parent_assembly = '1DH142-022'
connect by prior child_component = parent_assembly;

6. connect_by_root 查找根节点

select connect_by_root parent_assembly ROOT, parent_assembly, site_name, level
From scpdata.scp_pbom
start with parent_assembly = '1DH142-022'
connect by prior child_component = parent_assembly;

7. connect_by_isleaf标注是否叶子节点

select connect_by_root parent_assembly ROOT, parent_assembly,  child_component, site_name, level, connect_by_isleaf
From scpdata.scp_pbom
start with parent_assembly = '1DH142-022'
connect by nocycle prior child_component = parent_assembly;

 

ORACLE获取BOM清单的更多相关文章

  1. 不显示BOM清单的版本

    应用 Oracle Bill Of   Materiel 层 Level Function 函数名 Funcgtion Name BOM_BOMFDBOM 表单名 Form Name BOMFDBOM ...

  2. Oracle 获取当前日期及日期格式

    http://blog.sina.com.cn/s/blog_6168ee920100l2ye.html Oracle 获取当前日期及日期格式 获取系统日期:  SYSDATE()   格式化日期:  ...

  3. MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键

    MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键 >>>>>>>>>>>>>> ...

  4. oracle获取字符串长度函数length()和hengthb()

    原文:oracle获取字符串长度函数length()和hengthb() lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算s ...

  5. Oracle获取系统时间及格式化

    Oracle 获取当前日期及日期格式 获取系统日期:  SYSDATE()   格式化日期:     TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS)           ...

  6. Oracle EBS BOM模块常用表结构

    表名: bom.bom_bill_of_materials  说明: BOM清单父项目  BILL_SEQUENCE_ID NUMBER 清单序号(关键字)ASSEMBLY_ITEM_ID NUMBE ...

  7. Oracle获取当前年、月、日的方法

    Oracle获取当前年.月.日的方法 Oracle 获取当前年.月.日 1.//oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的 ...

  8. Oracle 获取本周、本月、本季、本年的第一天和最后一天

    Oracle 获取本周.本月.本季.本年的第一天和最后一天 --本周 select trunc(sysdate, 'd') + 1 from dual; select trunc(sysdate, ' ...

  9. MySQL,SQLSERVER,ORACLE获取数据库表名及字段名

    1.MySQL 获取表名: 用“show tables”命令.在程序中也可以采用该命令获取,在返回的RowSet中的“Tables_in_db”读出来.其中“db”是指你的数据库的名称,比如说Tabl ...

随机推荐

  1. mysql 速度优化

    1.添加索引 ALTER TABLE `cw_base_house` ADD INDEX idx_house ( `villageCode`, `buildingNo`, `unitNo`, `hou ...

  2. Python assert 关键字

    Python assert(断言)用于判断一个表达式,在表达式条件为 False 的时候触发异常. 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况. 语法格式: ...

  3. Docker 运行的 应用程序无法连接Oracle数据库的解决办法

    1. 最近公司使用docker化部署运行 app  发现一个部门的 多数据源取数的功能连接不上 oracle数据库 报错提示为: 2. 公司平台部同事给出两个解决方案: https://blog.cs ...

  4. jQuery 实现图片放大两种方式

    jQuery 实现图片放大两种方式 一.利用css样式表实现,多用于后台显示 1.这种比较简单,利用dom元素的hover实现样式切换 <style> img{ cursor: point ...

  5. yield浅析-Python3

    yield 浅析 先来一段代码: def fun1(): for i in range(5): yield i print("继续调用继续执行") gen1 = fun1() pr ...

  6. Linux-1.4文件操作命令(grep,cat,tail,head,less,find,chmod,tail,less)

    Linux基础命令(grep,cat,tail,head,less,find,chmod,tail,less) grep(常用) grep 指定“文件”搜索文件内容 grep hello 1.txt ...

  7. Buy a Ticket CodeForces - 938D (dijkstra)

    大意: n节点无向图, 点$i$到点$j$的花费为$2dis(i,j)+a[j]$, 对于每个点, 求最少花费. 每条边权翻倍, 源点S向所有点$i$连边, 权为$a[i]$, 答案就为$S$到每个点 ...

  8. TOPK 问题

    TOPK 问题 描述 如从海量数字中寻找最大的 k 个,这类问题我们称为 TOPK 问题,通常使用堆来解决: 求前 k 大,用最小堆 求前 k 小,用最大堆 例子 现有列表 [1, 2, 0, 3, ...

  9. 面试常考的js题目(一)

    1.找出dom文档中某个元素下面的所有文字(面试写的一塌糊涂,回来重写的) 1.返回回数组形式的 function getText(ele) { if (ele.nodeType === 3) { r ...

  10. SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum

    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum avg() 函数 定义和用法 AVG 函数返回数值列的平均值.NULL ...