sql-server - T-SQL : Cannot perform an aggregate function on an expression containing an aggregate or a subquery

标签 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)))

我怎样才能转换查询而不看到错误:

Cannot perform an aggregate function on an expression containing an aggregate or a subquery.

提前致谢

最佳答案

您可以构建一个查询,将加法转换为 '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 表达式控制。

关于sql-server - T-SQL : Cannot perform an aggregate function on an expression containing an aggregate or a subquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37628500/

相关文章:

sql-server - SQL Server 的多边形算法中的点

c# - 在 SQL Server 的 int 数据类型的情况下获取数字精度

sql - 主键列的外键约束 - 问题?

sql-server - VS2013数据库项目如何在解决方案中引用其他数据库项目

tsql - 是否可以匹配 PATINDEX 中除 ']' 之外的任何字符?

SQL Server INSTEAD OF INSERT 触发器失败

asp.net - Visual Studio 2017 连接字符串无法连接到服务器

sql-server - 多对多链接表的 Entity Framework 命名约定

sql - 无法将SELECT INSERT INTO SELECT插入带有标识列的表

sql - SQL - 查询以获取与每个类别和子类别关联的项目数