如何不聚合数字字段

How not to aggregate on numeric fields

我有这段代码,我试图不在两列 HistoryQuantityTOTFCST 上聚合。我不断收到此错误

Column 'SCPOMGR.HISTWIDE_CHAIN.HistoryQuantity' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

我认为我不应该按数字列分组。

有什么解决办法吗?

-- WAPE (chain)
SET ARITHABORT OFF 
SET ANSI_WARNINGS OFF

SELECT 
    b.[LOC], b.[DMDUNIT], 
    ABS(b.HistoryQuantity - a.TOTFCST) AS 'Abs Error',    
    SUM(b.HistoryQuantity) AS 'Sum of Actuals',
    SUM(ABS((b.HistoryQuantity - a.TOTFCST)))  AS 'Sum of Abs Error', 
    SUM(ABS((b.HistoryQuantity - a.TOTFCST))) / SUM(b.HistoryQuantity) AS 'WAPE'
FROM 
    SCPOMGR.FCSTPERFSTATIC a
JOIN 
    SCPOMGR.HISTWIDE_CHAIN b ON a.[STARTDATE] = b.[DMDPostDate] 
                             AND a.[DMDUNIT] = b.[DMDUNIT] 
                             AND a.[LOC] = b.[LOC]
GROUP BY 
    b.[LOC], b.[DMDUNIT], b.[DMDPostDate]
ORDER BY 
    b.[LOC]

ABS() 不是聚合函数,不能使用,例如,将聚合值传递给它

像这样使用任何东西

 ABS(Sum(b.HistoryQuantity) - Sum(a.TOTFCST))