【问题标题】:Calculate a field based on 2 calculated colums in SQL根据 SQL 中的 2 个计算列计算字段
【发布时间】:2017-12-18 09:58:35
【问题描述】:

我有一个查询,它根据称为工作单元的公共标识符对几个值求和。我试图弄清楚如何添加一个以百分比计算此公式的列:(SumOfAct - SumOfStd)/(SumOfStd)

我在想某种带有内部连接的子查询会起作用,但我不确定如何让它看起来正确。

这是我的代码,它可以获取我想要的所有内容,除了计算列:

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

【问题讨论】:

  • 您使用的是哪个DBMS

标签: sql join subquery inner-join calculated-columns


【解决方案1】:

如果我做对了,你可以直接在 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 子句以使其保持左连接。

【讨论】:

  • 谢谢!没想到这么简单!
猜你喜欢
  • 1970-01-01
  • 2014-02-08
  • 2016-12-05
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
相关资源
最近更新 更多