0

在我的一个应用程序中,我想将案例表达式与聚合函数相加。

我尝试了以下查询

Select Name,Sum(Case When MIN(arrival_time) = MAX(arrival_time) then 1 Else 0 End) as arrivedate from TableName group by Name

但是我遇到了这样的错误。

Msg 130, Level 15, State 1, Line 1
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.

请弄清楚我的问题。提前致谢

4

3 回答 3

4

你不能在聚合函数中有聚合函数,这意味着你不能做

sum(min(..) )

尝试:

select Name,Sum(Val) as arrivedate 
from (
    SELECT name , (Case When MIN(arrival_time) = MAX(arrival_time) then 1 Else 0 END) Val
    FROM TableName
    group by Name
) x
group by Name

但是,你真的需要 SUM 吗?我觉得像:

SELECT name , (Case When MIN(arrival_time) = MAX(arrival_time) then 1 Else 0 END) Val
FROM TableName
group by Name

无论如何都会给你相同的结果,因为内部查询和外部查询都是 Name 组

于 2013-04-10T05:53:21.687 回答
1

请试试:

select 
    Name, 
    Sum(Case When MN = MX then 1 Else 0 End) arrivedate
from(
    select Name, Min(arrival_time) MN, max(arrival_time) MX From TableName
    group by Name
)x
group by Name
于 2013-04-10T05:53:17.193 回答
0

您正在尝试对也跨越记录的最小值和最大值求和(跨越多个记录)。您需要重做查询,首先获取最小值/最大值,然后执行 sum 语句检查它们。

于 2013-04-10T19:55:36.243 回答