0

私のアプリケーションの 1 つで、ケース式を集計関数で合計したいと考えています。

次のクエリを試しました

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

いずれにしても同じ結果が得られます。そのため、内部クエリと外部クエリはすべて名前でグループ化されます

于 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 に答える