【问题标题】:Error : Cannot perform an aggregate function on an expression containing an aggregate or a subquery错误:无法对包含聚合或子查询的表达式执行聚合函数
【发布时间】:2021-08-27 13:32:05
【问题描述】:

我试图在我的一个 SQL 存储过程中编写它。只是一个简单的逻辑来检查@kPortalOrigin是否存在于表[cli].[tbl_S_PortalOrigin]中:

 IF (COUNT ((SELECT kPortalOrigin 
             FROM [cli].[tbl_S_PortalOrigin] 
             WHERE kPortalOrigin = @kPortalOrigin)) = 0) 
     RAISERROR('Portal Origin is invalid!', 16, 1)

但是,我收到此错误:

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

有什么帮助吗?谢谢。而且我不介意解释为什么会发生此错误。

【问题讨论】:

  • 如果您的表恰好包含数百万行,这将非常无效,并且可能需要很长时间才能完成。我强烈建议您改用 IF EXISTS (....) 替代方法
  • 您使用的是哪种 DBMS 产品? “SQL”只是所有关系型数据库都使用的一种查询语言,并不是特定数据库产品的名称(标准SQL中也没有IF)。请为您使用的数据库产品添加tagWhy should I tag my DBMS

标签: sql


【解决方案1】:
if EXISTs ((select kPortalOrigin from [cli].[tbl_S_PortalOrigin] where kPortalOrigin = @kPortalOrigin)) RAISERROR('Portal Origin is invalid!',16,1)

这会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多