oracle - MAXimo 工单总人工成本和总 Material 成本

标签 oracle maximo

我正在与我的 DBA 合作,尝试找到一种方法来汇总与工单相关的所有成本。由于任何工作订单都可以有多个子工作订单(通过多个“代”)以及相关工作订单(通过 RELATEDRECORDS 表),因此我需要能够获取所有子工作订单和相关工作订单的 ACTLABORCOST 和 ACTMATERIALCOST 字段的总计工作订单(以及每个子工作订单和相关工作订单)。我已经通过分层查询(使用 CONNECT BY PRIOR)来获取所有子项、孙子项等,但我陷入了相关的工作订单中。由于每个工作订单都可以有一个相关的工作订单及其自己的子工作订单和相关工作订单,因此我需要一个 Oracle 函数来深入了解子工作订单和相关工作订单及其子工作订单和相关工作订单。因为我认为这应该是相当普遍的事情,所以我希望有人已经做到了这一点并且可以分享他们所做的事情。

最佳答案

另一个选择是递归查询,正如 Francisco Sitja 所建议的那样。由于我的 Oracle 不允许使用 2 个 UNION ALL,因此我必须在两个子查询中联合到 WOANCESTOR 表,而不是专用一个 UNION ALL 来执行 WO 层次结构。然后我就可以使用允许的 UNION ALL 来执行 RELATEDRECORD 层次结构。而且它似乎运行得很快。

with mywos (wonum, parent, taskid, worktype, description, origrecordid, woclass, siteid) as (
    -- normal WO hierarchy
    select wo.wonum, wo.parent, wo.taskid, wo.worktype, wo.description, wo.origrecordid, wo.woclass, wo.siteid
    from woancestor a
        join workorder wo
            on a.wonum = wo.wonum
            and a.siteid = wo.siteid
    where a.ancestor = 'MY-STARTING-WONUM'
    union all
    -- WO hierarchy associated via RELATEDRECORD
    select wo.wonum, wo.parent, wo.taskid, wo.worktype, wo.description, wo.origrecordid, wo.woclass, wo.siteid
    from mywos
        join relatedrecord rr
            on mywos.woclass = rr.class
            and mywos.siteid = rr.siteid
            and mywos.wonum = rr.recordkey
            -- prevent cycle / going back up the hierarchy
            and rr.relatetype not in ('ORIGINATOR')
        join woancestor a
            on rr.relatedrecsiteid = a.siteid
            and rr.relatedreckey = a.ancestor 
        join workorder wo
            on a.siteid = wo.siteid
            and a.wonum = wo.wonum
)
select * from mywos
;

关于oracle - MAXimo 工单总人工成本和总 Material 成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57083667/

相关文章:

oracle - 在 weblogic/oracle 中为 JDBC 池指定默认模式

automation - 如何在 Maximo 自动化脚本打印语句中换行

scripting - 从自定义对话框保存当前记录时出现问题

birt - 如何为多个报告生成请求页面

sql - Maximo 中的 ASSET 表是否有主键?

oracle - ORA-00942 : table or view does not exist - Oracle

sql - 我需要一个查询来获取给定表的输出

oracle - 改变表检查约束

java - Maximo - 使用 java 代码获取当前工作流程位置

java - ORA-01847 日期必须介于 1 和月份的最后一天之间 - 将日期插入 Oracle 数据库