sql语句求解COUNT (CASE WHEN THEN***)排除重复项
我有一个语句'完成种数'=COUNT(CASEWHENA.CLOSE_ID='T'THENA.MO_NOELSE0END),这样运行后,COUNT的结果是全部的A.MO_...
我有一个语句
'完成种数'=COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE 0 END),
这样运行后,COUNT的结果是全部的A.MO_NO的个数,但是A.MO_NO里面有重复的,我想排除掉重复的,该怎么做?如果变成
'完成种数'=COUNT(DISTINCT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE 0 END)),分析器就提示【将 varchar 值 'MO06190004' 转换为数据类型为 int 的列时发生语法错误。】要怎么搞哦?如果调换成CASE WHEN *** THEN COUNT***的形式,又非要让我加上GROUP BY,但是加上后汇总表就乱了,所以不行。求高人指教一下。
这个语句是加在C#中BUTTON控件下的,所以只能用语句吧 展开
'完成种数'=COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE 0 END),
这样运行后,COUNT的结果是全部的A.MO_NO的个数,但是A.MO_NO里面有重复的,我想排除掉重复的,该怎么做?如果变成
'完成种数'=COUNT(DISTINCT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE 0 END)),分析器就提示【将 varchar 值 'MO06190004' 转换为数据类型为 int 的列时发生语法错误。】要怎么搞哦?如果调换成CASE WHEN *** THEN COUNT***的形式,又非要让我加上GROUP BY,但是加上后汇总表就乱了,所以不行。求高人指教一下。
这个语句是加在C#中BUTTON控件下的,所以只能用语句吧 展开
4个回答
展开全部
select sum(case when A.CLOSE_ID='T' then 1 else 0 end)
from (select distinct A.CLOSE_ID,A.MO_NO from A) T
'完成种数'=COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE 0 END)这句的逻辑就有问题,你要求A.CLOSE_ID='T' 时, A.MO_NO 的个数吗?那样你直接写
select count(A.MO_NO) from A where A.CLOSE_ID='T' 就好了
就算你一定要用case when...then,你也要用sum而不是count,你用count是所以(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE 0 END)的个数,就算是0,它也是个值,仍然会被count进去啊,你只有sum时,0才是不会起做用的数。
from (select distinct A.CLOSE_ID,A.MO_NO from A) T
'完成种数'=COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE 0 END)这句的逻辑就有问题,你要求A.CLOSE_ID='T' 时, A.MO_NO 的个数吗?那样你直接写
select count(A.MO_NO) from A where A.CLOSE_ID='T' 就好了
就算你一定要用case when...then,你也要用sum而不是count,你用count是所以(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE 0 END)的个数,就算是0,它也是个值,仍然会被count进去啊,你只有sum时,0才是不会起做用的数。
展开全部
可以用count函数,但是else时用null值,不能用0,即:
COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE null END)
这个else还可以不写,因为默认情况下不写就是空值。即:
COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO END)
COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE null END)
这个else还可以不写,因为默认情况下不写就是空值。即:
COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO END)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select count(*) from (select distinct * from tableName) as a
你参考这种方式试一下
如果实在不行,就用视图吧
你参考这种方式试一下
如果实在不行,就用视图吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE 0 END) from (select distinct * from XXX)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询