2016-01-19 51 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