是否有可能在mssql中的一个案例中有区别。像这样的东西。
select
sum(case when distinct(Ocid) and Code = 200 then 1
else 0 end) as something
from mytable
如果我不想修改from子句是否可能以某种方式?
答案 0 :(得分:0)
我很确定你想做什么是行不通的。
这将检查整个表中是否只有一个Ocid
。
select
sum(case when Code = 200 then 1
else 0 end) as something
from mytable
having count(distinct Ocid) = 1
这将计算Ocid
为200的<{1}}:
Code
编辑:我不确定你想做什么。
答案 1 :(得分:0)
到目前为止,这是我最好的,但这不是你所要求的。您可以使用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.