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

2023-12-04

我的存储过程有问题。

我收到错误:

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

这是我的存储过程中我认为发生错误的部分:

SELECT column_1, column_2,
       SUM(CASE WHEN column_2 NOT IN (SELECT product FROM table_products) THEN 1
                ELSE 0
           END) AS Total
FROM my_table 
WHERE is_rated = '1'
GROUP BY column_1, column_2 

谢谢。


如果您尝试避免相关子查询,通常会获得更好的性能:

SELECT
    MT.column_1,
    MT.column_2,
    SUM(CASE WHEN P.product IS NULL THEN 1 ELSE 0 END) AS total
FROM
    My_Table MT
LEFT OUTER JOIN Products P ON P.product = MT.column_2
WHERE
    MT.is_rated = '1'
GROUP BY
    MT.column_1,
    MT.column_2

这假设 Products 表中最多只有一个匹配项(Products,而不是 Table_Products - 当然它是一个表,所以不要将其放在名称中)。换句话说,如果产品是产品表的 PK(或 AK),则这将起作用。

如果情况并非如此,并且您可能在Products那么你可以JOIN到使用的子查询DISTINCT on the product column.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 无法对包含聚合或子查询的表达式执行聚合函数 的相关文章

随机推荐