mssql のケース内で区別することは可能ですか。このようなもの。
select
sum(case when distinct(Ocid) and Code = 200 then 1
else 0 end) as something
from mytable
from 句を変更したくない場合は、別の方法で可能ですか?
mssql のケース内で区別することは可能ですか。このようなもの。
select
sum(case when distinct(Ocid) and Code = 200 then 1
else 0 end) as something
from mytable
from 句を変更したくない場合は、別の方法で可能ですか?
あなたがやりたいことはうまくいかないと確信しています。
Ocid
これにより、テーブル全体に1 つしかないかどうかがチェックされます。
select
sum(case when Code = 200 then 1
else 0 end) as something
from mytable
having count(distinct Ocid) = 1
Ocid
これは、Code
が 200の個別の をカウントします。
select sum(something)
from
(
select
count(*) as count,
(case when max(Code) = 200 then 1
else 0 end) as something
from mytable
group by ocid
) a
where count = 1
編集:あなたが何をしたいのかよくわかりません。
これはこれまでのところ私のベストですが、あなたが求めているものではありません. CTEやサブクエリなどで簡単に実行できますが、あなたが求めているように実行できるかどうかはわかりません.
Select Sum(bah)
From (Select 1 As bah
From mytable mt2
Where mt2.Code = 200
Group By mt2.Ocid
Having Count(mt2.Ocid) = 1) n
あなたに対する私の答えは、「いいえ」です。あなたがやろうとしていることは、追加の変更を加えることなく行うことはできません。このエラーは常に行き止まりになります。
Msg 130, Level 15, State 1, Line 5
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.