首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果某个其他字段在Oracle中有值,如何显示字段的空值

如果某个其他字段在Oracle中有值,如何显示字段的空值
EN

Stack Overflow用户
提问于 2014-09-01 12:26:31
回答 2查看 90关注 0票数 0

我们有需求,我们需要显示所有的劳动力,材料,服务,工具与最大的工作订单的线成本之和。我写了这个查询,但是材料线成本的总和增加了一倍,有一个以上的服务线路成本。例如

馄饨- 1234 材料线成本- 10 服务项目费用-5和6(2个服务项目) 材料项目费用共计- 20 服务项目费用总额- 11

材料线的总成本是错误的。我使用了下面的查询,请告诉我如何修复它。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-03 18:52:47

WORKORDER表将为您计算这些值。以下字段是否没有提供所需的数据?

ACTINTLABCOST ACTLABCOST ACTLABCOST ACTOUTLABCOST ACTSERVCOST ACTTOOLCOST

ESTATAPPRINTLABCOST ESTATAPPRLABCOST ESTATAPPRLABCOST ESTATAPPRSERVCOST ESTINTLABCOST ESTATAPPRLABCOST ESTSERVCOST ESTTOOLCOST ESTINTLABCOST ESTATAPPRLABCOST ESTSERVCOST ESTTOOLCOST ESTINTLABCOST ESTATAPPRLABCOST ESTSERVCOST ESTTOOLCOST ESTINTLABCOST ESTATAPPRLABCOST ESTMATCOST

票数 0
EN

Stack Overflow用户

发布于 2014-09-01 13:42:35

问题是联接都在语句的顶层。这将导致每个工作顺序多行/多条记录。

一种解决方案是在两个独立的子select语句中计算matusetrans和servrectrans的总和。

示例:

代码语言:javascript
复制
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

作为第二种方法,检查已包含此数据的列的工作表(最终会进行一些非规范化以提高性能)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25605837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档