T-SQL:无法对包含聚合或子查询的表达式执行聚合函数

时间:2016-06-04 09:14:23

标签: sql-server tsql

我正在尝试添加总金额的结果并将其减去总数,但我看到以下错误:

想象一下这样的事情

第一子查询:1 3 5 7 第二子查询:2 4 6

总计:(1 + 3 + 5 + 7) - (2 + 4 + 6)= 4

这是我的查询但正如我所说,我看到以下错误:

     Select SUM  ((
 (select SUM (amount)  FROM  transfer tr1 
    where transfer_type = 'Positive'  group by transfer_id)
EXCEPT
(SELECT SUM (amount) from transfer tr2 
    where  transfer_type = 'Negative'  group by transfer_id)))

如何转换查询以不查看错误:

  

无法对包含聚合或子查询的表达式执行聚合函数。

非常感谢提前

1 个答案:

答案 0 :(得分:3)

您可以构建一个查询,将加法变为'Negative'值的减法,如下所示:

SELECT
    transfer_id
,   SUM (
        CASE 'transfer_type'
            WHEN 'Positive' THEN amount
            WHEN 'Negative' THEN -amount
            ELSE NULL
        END
    ) AS total
FROM transfer
GROUP BY transfer_id

现在使用了一个SUM,加号的符号由CASE表达式控制。