jom*_*k1e 2 sql t-sql sql-server
我的存储过程存在问题.
我收到错误:
无法对包含聚合或子查询的表达式执行聚合函数
这是我的存储过程的一部分,我相信错误发生:
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
Run Code Online (Sandbox Code Playgroud)
谢谢.
如果您尝试避免相关子查询,通常会获得更好的性能:
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
Run Code Online (Sandbox Code Playgroud)
这假设Products表中最多只有一个匹配项(产品,而不是Table_Products - 当然它是一个表,所以不要把它放在名称中).换句话说,如果product是Products表的PK(或AK),这将起作用.
如果不是这种情况,你可能有多个匹配的Products
表,那么你可以JOIN
到使用子查询DISTINCT
的product
列.
归档时间: |
|
查看次数: |
13936 次 |
最近记录: |