gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 23:45:44 25 4
gpt4 key购买 nike

我的存储过程有问题。

我收到错误:

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

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

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 - 当然它是一个表,所以不要把它放在名称中)。换句话说,如果产品是 Products 表的 PK(或 AK),这将起作用。

如果不是这种情况,并且您可能在 Products 表中有多个匹配项,那么您可以 JOIN 到使用 DISTINCT 的子查询product 列。

关于SQL Server 无法对包含聚合或子查询的表达式执行聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36867088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com