子选择 T-SQL 中的聚合函数

Posted

技术标签:

【中文标题】子选择 T-SQL 中的聚合函数【英文标题】:Aggregate functions in subselect T-SQL 【发布时间】:2020-08-22 11:51:28 【问题描述】:

我刚开始使用 T-SQL 并尝试编写更新代码,但我的子选择中需要一个聚合函数,而我似乎没有。

这是我目前拥有的

Update Roysched
Set Royalty = (Royalty - 2)
Where title_id in (select title_id from sales where SUM(qty) > 30)

但我收到关于子选择中的聚合的错误

解决方法是什么?

【问题讨论】:

您需要使用 sum(qty) > 30 而不是 where。 【参考方案1】:

您不能在 where 子句中使用聚合术语 - 这就是 having 子句的用途。请注意,您还缺少 group by 子句:

UPDATE roysched
SET    royalty = (royalty - 2)
WHERE  title_id IN (SELECT   title_id
                    FROM     sales
                    GROUP BY title_id
                    HAVING   SUM(qty) > 30)

【讨论】:

以上是关于子选择 T-SQL 中的聚合函数的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server聚合函数

SqlServer聚合函数

T-SQL 中的用户定义聚合函数而不是 .net 程序集? [复制]

使用聚合函数而不选择聚合列且不使用子查询

T-SQL 聚合函数Count与NULL

SQL Server“不能对包含聚合或子查询的表达式执行聚合函数”,但 Sybase 可以