我们需要在Maximo中显示与工单相关的所有人工,材料,服务和工具的总成本之和。我已经编写了查询但是,物料线成本的总和增加了一倍,因为有多个服务线成本。 例如
wonum - 1234
材料生产线成本 - 10
服务项目费用 - 5和6(2条服务项目)
总材料生产线成本 - 20
总服务线费用 - 11
物料线成本总额是错误的。我使用了以下查询,请让我知道如何解决它
select a.wonum,a.description,a.location,a.crewid,a.worktype,a.wopriority,a.supervisor,a.actstart,a.siteid,sum(d.linecost) as totalmaterialcost,
sum(b.loadedcost)as totalservicecost
from workorder a
left outer join matusetrans d
on a.wonum=d.refwo and a.siteid=d.siteid
left outer join servrectrans b
on a.wonum=b.refwo and a.siteid=b.siteid
where a.wonum='1234' and a.siteid='ABC'
group by a.wonum,a.description,a.location,a.crewid,a.worktype,a.wopriority,a.supervisor,a.actstart,a.siteid
答案 0 :(得分:1)
问题是连接都在语句的顶层。这导致每个工作订单多行/记录。
一种解决方案是在两个单独的子选择语句中计算 matusetrans 和 servrectrans 的总和。
示例:
select a.wonum,
b.sum as totalservicecost,
d.sum as totalmaterialcost
from workorder a
left join (
select sum(b.loadedcost) as sum, b.siteid, b.refwo
from servrectrans b
group by b.siteid, b.refwo
) b on a.wonum = b.refwo and a.siteid = b.siteid
left join (
-- second sum-select goes here
) d on -- second join condition goes here
作为第二种方法,检查workorder-table中已经包含此数据的列(最终会有一些去标准化以提高性能)。
答案 1 :(得分:0)
WORKORDER表将为您计算这些值。以下字段是否未提供您需要的数据?
ACTINTLABCOST ACTLABCOST ACTMATCOST ACTOUTLABCOST ACTSERVCOST ACTTOOLCOST
ESTATAPPRINTLABCOST ESTATAPPRLABCOST ESTATAPPRMATCOST ESTATAPPROUTLABCOST ESTATAPPRSERVCOST ESTATAPPRTOOLCOST ESTINTLABCOST ESTLABCOST ESTMATCOST ESTOUTLABCOST ESTSERVCOST ESTTOOLCOST