select distinct dept 部门,count(typename) 项目类型,
活动组织=(case when typename ='活动组织' then count(typename) else 0 end),
测试=(case when typename='测试' then count(typename) else 0 end),
筹备=(case when typename='筹备' then count(typename) else 0 end),
培训=(case when typename='培训' then count(typename) else 0 end),
项目=(case when typename='项目' then count(typename) else 0 end)
from testselect group by dept, typename
我想要的效果是,每个部门的项目情况只查出一条记录,并统计各个部门所有项目的条数和每个项目的条数。比如,秘书部这个部门,应该只有一条记录,项目类型这一列的结果应该是3,活动组织是2,培训是1。(注:查的是同一张表的两个字段,部门是一个字段,后面所有的列属于同一个字段),SQL语句应该怎么查,如果光用SQL语句查不出这样的效果,用视图或者存储过程又应该怎么写呢?望各们高手们能为小弟解答,非常非常感谢!!!!
你就不能把原始的表结构列出来?项目类型这个字段也需要求和?
我好像看懂了你在说什么了
你不已经写了来了么,只是你group by时,多加了一个typename,去掉就OK了
谢啦,不过你还是没完全看明白我的意思,而且,typename这个不能去掉,去掉这条语句执行不了,我之前已经写过了。。
@justinwujian: 试下这个吧:
select dept 部门,count(typename) 项目类型,
活动组织=sum(case when typename ='活动组织' then 1 else 0 end),
测试=sum(case when typename='测试' then 1 else 0 end),
筹备=sum(case when typename='筹备' then 1 else 0 end),
培训=sum(case when typename='培训' then 1 else 0 end),
项目=sum(case when typename='项目' then 1 else 0 end)
from testselect group by dept
@trytocatch: 哈哈,太感谢了,查出来的效果就是我想要的
@justinwujian: 呵呵,前面没看仔细,有阵子没用sql了
你既然不想让不同的typename分成不同的组,那一开始就不要把typename加到group by里面去,应该到聚集函数上面去想办法
@justinwujian: 结帖吧,哥们
select 字段1,count(字段1) from table
group by 字段1