那当然--trycount(case when isnull(a,'11') = '11' then Null else 1 end)- count(case when isnull(a,'11') = '11' then 1 else Null end),
我要的是null的时候统计为零,a='11'的时候,统计数减一---count(1) - count(case when a = '11' then 1 else null end)
应该是这样 sum(case when a is null then 0 when a='11' then -1 else 1 end) 数量, sum(case when a is null then 0 when a='11' then -b else b end) 合计
----你上面的思路不正确,用这个吧 select 总个数=count(1)-sum(case when a='11' then -1 else 0 end), 总和数=sum(a)-sum(case when a='11' then -1 else 0 end) from 表
select 总个数=count(1)-sum(case when a='11' then -1 else 0 end), 总和数=sum(a)-sum(case when a='11' then -1 else a end) from 表
汗,我试验了一下,大家的方法,都不行,不是多统计一,就是少统计一..... 这个方法: sum(case when a is null then 0 when a='11' then -1 else 1 end) 数量, sum(case when a is null then 0 when a='11' then -b else b end) 合计 少统计一。这个方法: select 总个数=count(1)-sum(case when a='11' then -1 else 0 end), 总和数=sum(a)-sum(case when a='11' then -1 else a end) from 表 多统计一。看起来好像都对,但试验起来却都不对。
你的A是什么 类型呀, sum(a) case when a='11' 这两处有点不爽
总个数=count(1)-sum(case when a='11' then -1 else 0 end), --- 总个数=count(1) + sum(case when a='11' then -1 else 0 end),改成加,负负得正啦
sum(case when processcode is null then 0 when processcode='200000' then -1 else 1 end), sum(case when processcode is null then 0 when processcode='200000' then -RevAmount else RevAmount end)这是我按照大家说的写出来的,processcode是char的,RevAmount是money,而且,我发现,sum在processcode is null的时候,不会sum出0来,而仍然是null。我的验证方法是,我select 出来共五条数据,其中有一条是processcode='200000' ,正确的结果应该就是5-1=4 用老乌龟的方法,出来的却是3 用leo_lesley 的方发,出来的却是6。
总个数=count(1)-sum(case when a='11' then -1 else 0 end), --- 总个数=count(1) + sum(case when a='11' then -1 else 0 end), 改成加,负负得正啦
count(case when isnull(a,'11') = '11' then 1 else Null end),
sum(case when a is null then 0
when a='11' then -1
else 1
end) 数量,
sum(case when a is null then 0
when a='11' then -b
else b
end) 合计
----你上面的思路不正确,用这个吧
select 总个数=count(1)-sum(case when a='11' then -1 else 0 end),
总和数=sum(a)-sum(case when a='11' then -1 else 0 end)
from 表
总和数=sum(a)-sum(case when a='11' then -1 else a end)
from 表
这个方法:
sum(case when a is null then 0
when a='11' then -1
else 1
end) 数量,
sum(case when a is null then 0
when a='11' then -b
else b
end) 合计
少统计一。这个方法:
select 总个数=count(1)-sum(case when a='11' then -1 else 0 end),
总和数=sum(a)-sum(case when a='11' then -1 else a end)
from 表
多统计一。看起来好像都对,但试验起来却都不对。
总个数=count(1) + sum(case when a='11' then -1 else 0 end),改成加,负负得正啦
sum(case when processcode is null then 0 when processcode='200000' then -RevAmount else RevAmount end)这是我按照大家说的写出来的,processcode是char的,RevAmount是money,而且,我发现,sum在processcode is null的时候,不会sum出0来,而仍然是null。我的验证方法是,我select 出来共五条数据,其中有一条是processcode='200000' ,正确的结果应该就是5-1=4
用老乌龟的方法,出来的却是3
用leo_lesley 的方发,出来的却是6。
总个数=count(1) + sum(case when a='11' then -1 else 0 end), 改成加,负负得正啦