是否可以在 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
这将检查整个表中是否只有一个。
select
sum(case when Code = 200 then 1
else 0 end) as something
from mytable
having count(distinct Ocid) = 1
Ocid
这将计算具有Code
200的distinct :
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.