作业帮 > 综合 > 作业

SQL对不重复项进行计数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 05:52:58
SQL对不重复项进行计数
select WorkSubstance,count(Distinct Class)as Class from ClassDate where Machine='020-C03' and DateTime='2014-7-18' group by WorkSubstance
此项语句是对 WorkSubstance 进行分类汇总,但WorkSubstance旁边有一列 CLASS ,里面可能有2种值,也可能有一种值,用这个语句进行分类汇总的时候,如果WorkSubstance是一样的,则能正确返回CLASS的不重复项个数,如果WorkSubstance是不一样的,那么就返回不了CLASS不重复项的个数,求如何能正确返回CLASS中的不重复项个数,在WorkSubstance可能是一样的也可能是不一样的情况下,
就是在分类汇总下,对符合WHERE条件下的整个一列进行不重复项计数
那如果要不重复的,就要把分组去掉,语句改成:
select count(Distinct Class)as Class from ClassDate where Machine='020-C03' and DateTime='2014-7-18'
再问: 分组是必须的呀,就是在分组的情况下对符合条件的CLASS进行整个的不重复计数,或者能先把CLASS这一列去掉,能在查询中再插一列做为新列也行
再答: 按你的意思,这样的语句是对的,能不能举例子说明你需要什么,你描述不清楚啊
select WorkSubstance,count(Distinct Class)as Class from ClassDate where Machine='020-C03' and DateTime='2014-7-18' group by WorkSubstance
再问:
再答: 那语句应该是这样啊,用sum函数,不是用count函数
select WorkSubstance,sum(distinct Class)as Class,sum(count) as count(求和) from ClassDate where Machine='020-C03' and DateTime='2014-7-18' group by WorkSubstance
再问: sum-unique aggregate 运算不能以 char 数据类型作为参数。

它跳出来这个提示??
再答: 试试:
select WorkSubstance,sum(distinct Class)as Class,sum(convert(int,count)) as count(求和) from ClassDate where Machine='020-C03' and DateTime='2014-7-18' group by WorkSubstance