2017-07-13 18 views
0

私は、ワークセルとして知られる共通の識別子に基づいて2つの値を合計するクエリを持っています。私は、この数式を計算する列をパーセンテージとして追加する方法を見つけようとしています。(SumOfAct - SumOfStd)/(SumOfStd)SQLで2つの計算された列に基づいてフィールドを計算します

内部結合を使った何らかのサブクエリが機能すると思っていましたが、それを正しく見えるようにする方法がわからない。ここで

は、その計算された列を除いて、私が望むすべてを取得する私のコードです:

SELECT v_MES_OrderIssues.AssignedWorkcell 
, CONVERT(Decimal(10,2), Sum(v_SAP_OrderOperations.Std)) AS SumOfStd 
, CONVERT(Decimal(10,2), Sum(v_SAP_OrderOperations.Act)) AS SumOfAct 
, CONVERT(Decimal(10,2), Sum(v_SAP_OrderOperations.Variance)) AS SumOfVariance 

FROM (v_SAP_OrderOperations 
LEFT JOIN v_SAP_Orders ON v_SAP_OrderOperations.Ordr = v_SAP_Orders.Ordr) 
LEFT JOIN v_MES_OrderIssues ON v_SAP_OrderOperations.Ordr = v_MES_OrderIssues.WOrder 
WHERE (((v_SAP_Orders.OpenOrder) Like '1') 
AND ((v_SAP_Orders.Equipment) Is Not NULL) 
AND ((v_SAP_OrderOperations.ACT)>0)) 
AND ((v_MES_OrderIssues.AssignedWorkcell) Like 'S5H%W') 
AND ((v_MES_OrderIssues.DateTimeClosed) Is Null) 
OR (((v_SAP_Orders.OpenOrder) Like '1') 
AND ((v_SAP_Orders.Equipment) Is Not NULL) 
AND ((v_SAP_OrderOperations.OpenOp) Like '0')) 
AND ((v_MES_OrderIssues.AssignedWorkcell) Like 'S5H%W') 
AND ((v_MES_OrderIssues.DateTimeClosed) Is Null) 

GROUP BY v_MES_OrderIssues.AssignedWorkcell 

ORDER BY Sum(v_SAP_OrderOperations.Variance) DESC 
+0

どの[DBMS](https://en.wikipedia.org/wiki/DBMS)を使用していますか? –

答えて

0

私は右のそれを得た場合にはヨーヨーが、ところでSELECT句で直接

SELECT v_MES_OrderIssues.AssignedWorkcell 
, CONVERT(Decimal(10,2), Sum(v_SAP_OrderOperations.Std)) AS SumOfStd 
, CONVERT(Decimal(10,2), Sum(v_SAP_OrderOperations.Act)) AS SumOfAct 
, CONVERT(Decimal(10,2), Sum(v_SAP_OrderOperations.Variance)) AS SumOfVariance 
, CONVERT(Decimal(10,2), (Sum(v_SAP_OrderOperations.Act) - Sum(v_SAP_OrderOperations.Std))/ Sum(v_SAP_OrderOperations.Std)) AS percentage 
... 

を行うことができます

LEFT JOIN v_SAP_Orders 
... 
WHERE (((v_SAP_Orders.OpenOrder) Like '1') 

INNER JOIN実際には左結合表の列が次のとおりです。 NULL値を持つことが禁止されています。述部をON句に移動して、左結合されたままにしておきたい場合があります。

+0

ありがとう!それは簡単だろうとは思わなかった! – Michael

関連する問題