首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

疑难统计有关问题

2012-12-16 
疑难统计问题本帖最后由 waCtr 于 2012-11-22 10:45:41 编辑数据表table1部门时间级别A类B类部门A..1是部

疑难统计问题
本帖最后由 waCtr 于 2012-11-22 10:45:41 编辑 数据表table1
    部门    时间    级别   A类  B类
    部门A   ..        1                是
    部门B   ..        2        是   
    部门C   ..        2                是
    部门C   ..        3        是
上面是表数据

想统计  某一个部门下是B类的  所有级别(1/2/3...)   的次数
 比如:统计所有部门
          所以部门     级别1       1次
          所有部门     级别2       1次
          所以部门     级别3       0次
或者统计A部门
            A部门      级别1       1次
            A部门      级别2       0次
            A部门      级别3       0次
            ..
...

这种sql 估计会很复杂 
  秋高手指点....





[最优解释]



drop table tabletest
create table tableTest
(
dept varchar(20),
Class varchar(20),
CategoryA varchar(20),
CategoryB varchar(20),
CreateDate datetime
)
insert into tableTest values ('部门1','1','是','',getdate())
insert into tableTest values ('部门1','2','是','',getdate())
insert into tableTest values ('部门1','2','','是',getdate())
insert into tableTest values ('部门1','1','是','',getdate())
insert into tableTest values ('部门2','1','是','',getdate())
insert into tableTest values ('部门2','2','','是',getdate())
insert into tableTest values ('部门2','1','是','',getdate())
insert into tableTest values ('部门2','1','是','',getdate())

select * from tabletest

select dept,class,count(class) as 级别次数 from tabletest
--where dept=''
group by dept,class
order by dept

/*

部门112
部门122
部门213
部门221

*/


[其他解释]
他count错了列
drop table tabletest
 create table tableTest
 (
 dept varchar(20),
 Class varchar(20),
 CategoryA varchar(20),
 CategoryB varchar(20),
 CreateDate datetime
 )
 insert into tableTest values ('部门1','1','是','',getdate())


 insert into tableTest values ('部门1','2','是','',getdate())
 insert into tableTest values ('部门1','2','','是',getdate())
 insert into tableTest values ('部门1','1','是','',getdate())
 insert into tableTest values ('部门2','1','是','',getdate())
 insert into tableTest values ('部门2','2','','是',getdate())
 insert into tableTest values ('部门2','1','是','',getdate())
 insert into tableTest values ('部门2','1','是','',getdate())
  
 select * from tabletest
  
 select dept,class,count(CASE WHEN CategoryB='' THEN NULL  ELSE CategoryB END ) as 级别次数 from tabletest
 
 group by dept,class
 order by dept
  
 /*
  
 dept                 class                级别次数
 -------------------- -------------------- -----------
 部门1                  1                    0
 部门1                  2                    1
 部门2                  1                    0
 部门2                  2                    1
 警告: 聚合或其他 SET 操作消除了 Null 值。
 
 (4 行受影响)
 */


[其他解释]
该回复于2012-11-22 10:50:39被管理员删除
[其他解释]
该回复于2012-11-22 13:06:29被管理员删除
[其他解释]
引用:
SQL code?123456789101112131415161718192021222324252627282930313233343536drop table tabletestcreate table tableTest(dept varchar(20),Class varchar(20),CategoryA varchar(20),CategoryB varch……

这个是查询了所有部门的没错 但是
CategoryB  的值为空  的也算一次了??? 应该为0次  

热点排行