2013-04-10 17 views
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

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

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 

会给你同样的结果任何方式,对于内部查询和外部查询所有组名称

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 
0

你正在尝试做一个总和(横跨多个记录云)的最小值和最大值也可以通过记录。您需要重做查询,先查看最小/最大值,然后执行sum语句来检查它们。