2016-01-19 69 views
-1

JobMaster选择列值忽略总和在SQL Server

JobID | PLID | SetupTime | 
|1  | 1 |  10  | 
|2  | 2 |  20  | 
|2  | 3 |   | 
|3  | 1 |  05  | 
|3  | 3 |  12  | 

OpertaionMaster

|PLID | SetupTime    | 
| 1 | 12     | 
| 2 | 15     | 
| 3 | 20     | 

Outupt包含

表JobMaster

JobID | Productivity | 
|1  |  12  | 
|2  |  15  | 
|3  |  32  | 

需要OperationMaster加入设置时间,如果在JobMaster 的SetupTime不存在,那么它应该忽略另外setupTime值

请帮我提前

感谢

+0

那么你有什么尝试? –

+0

你可以添加更多的样本表数据,并调整预期的结果吗? – jarlh

+0

@jarlh:完成Sir Sir – Swap

回答

0

是不是它是一个简单的INNER JOINWHERE jm.SetupTime IS NOT NULL

SELECT jm.JobID, jm.SetupTime AS Productivity 
FROM JobMaster jm 
INNER JOIN OpertaionMaster om 
    ON jm.PLID = om.PLID 
WHERE jm.SetupTime IS NOT NULL 
+0

当JobMaster中的设置时间不为空时,我必须从操作主设备中获取设置时间的总和。请帮助我 – Swap

+0

@Swap:你的输出结果是在哪里求和? –

+0

我已经更新了表格记录和输出。你现在可以得到它 – Swap

0

Join两个表一起,对每个作业ID做GROUP BY和SUM:

select j.jobid, sum(o.SetupTime) 
from JobMaster as j 
    join OpertaionMaster as o on j.PLID = o.PLID 
group by j.jobid 

如果你也想返回作业ID的,没有任何时间,做LEFT JOIN而不是仅仅JOIN

+0

先生根据你的查询,JobId的Setuptime给了我35.但是因为在JobMaster中没有第二条记录的Setuptime,所以它不会添加PL id的SetuptTime 3.所以我想把结果作为15给JobId 2 – Swap

+0

@Swap,对不起,没有仔细阅读。你能描述一下每个jobid如何分别获得生产力值12,15,32吗? – jarlh