首页 新闻 会员 周边

oracle中怎么查询表中一个字段,并统计字段中每一个值的条数?

0
悬赏园豆:60 [已解决问题] 解决于 2012-12-30 21:36

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语句查不出这样的效果,用视图或者存储过程又应该怎么写呢?望各们高手们能为小弟解答,非常非常感谢!!!!

justinwujian的主页 justinwujian | 初学一级 | 园豆:114
提问于:2012-12-29 19:13
< >
分享
最佳答案
0

你就不能把原始的表结构列出来?项目类型这个字段也需要求和?

我好像看懂了你在说什么了

你不已经写了来了么,只是你group by时,多加了一个typename,去掉就OK了

收获园豆:60
trytocatch | 菜鸟二级 |园豆:373 | 2012-12-29 20:03

谢啦,不过你还是没完全看明白我的意思,而且,typename这个不能去掉,去掉这条语句执行不了,我之前已经写过了。。

justinwujian | 园豆:114 (初学一级) | 2012-12-29 20:34

@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 | 园豆:373 (菜鸟二级) | 2012-12-29 21:42

@trytocatch: 哈哈,太感谢了,查出来的效果就是我想要的

justinwujian | 园豆:114 (初学一级) | 2012-12-29 21:56

@justinwujian: 呵呵,前面没看仔细,有阵子没用sql了

你既然不想让不同的typename分成不同的组,那一开始就不要把typename加到group by里面去,应该到聚集函数上面去想办法

trytocatch | 园豆:373 (菜鸟二级) | 2012-12-29 22:01

@justinwujian: 结帖吧,哥们

trytocatch | 园豆:373 (菜鸟二级) | 2012-12-30 00:14
其他回答(1)
0

select 字段1,count(字段1) from table

group by 字段1

chenping2008 | 园豆:9836 (大侠五级) | 2012-12-30 14:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册