gpt4 book ai didi

sql - 如何对包含聚合或子查询的表达式执行聚合函数?

转载 作者:行者123 更新时间:2023-12-02 20:42:33 26 4
gpt4 key购买 nike

我有一个这样的查询

SELECT Id
,sum(CASE
WHEN ErrorId NOT IN (
,10
,11
,12
,13
)
THEN 1
ELSE 0
END) errorCount
FROM Table
group by Id

我不喜欢硬编码的 ids 列表,我有一个简单的查询可以得到我想要的东西

SELECT Id
,sum(CASE
WHEN ErrorId NOT IN (
select ErrorId from Errors where ErrorCategory = 'Ignore_Error'
)
THEN 1
ELSE 0
END) errorCount
FROM Table
group by Id

但是当我尝试这个时,我得到了

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

我最好的前进方向是什么?

最佳答案

如错误消息中所述,您无法在子查询之上使用Aggregate函数

正确的做法是这样

SELECT t.Id,
Count(e.ErrorId) errorCount
FROM Table t
LEFT JOIN Errors e
ON t.ErrorId = e.ErrorId
AND e.ErrorCategory = 'Ignore_Error'
GROUP BY t.Id

另一种方法是使用外部应用

SELECT t.Id,
Count(ou.ErrorId) errorCount
FROM Table t
OUTER apply (SELECT e.ErrorId
FROM Errors e
WHERE t.ErrorId = e.ErrorId
AND e.ErrorCategory = 'Ignore_Error') ou
GROUP BY t.id

关于sql - 如何对包含聚合或子查询的表达式执行聚合函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35633450/

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