日期:2014-05-18 浏览次数:20675 次
select 事业单位数= case 单位性质='事业法人' then count(单位) else 0 end , 企业单位数=case 单位性质='企业法人' then count(单位) else 0 end from tb group by 城市
------解决方案--------------------
drop table tb create table tb (姓名 varchar(4),城市 varchar(4),单位 varchar(4),企业性质 varchar(8)) insert into tb select '王一', '北京', '联通', '事业法人' insert into tb select '王二', '北京', '网通', '事业法人' insert into tb select '王三', '北京', '电信', '企业法人' insert into tb select '王四', '北京', '移动', '企业法人' insert into tb select '王五', '北京', '网通', '事业法人' insert into tb select '王六', '上海', '联通', '事业法人' insert into tb select '王七', '上海', '移动', '企业法人' insert into tb select '王八', '上海', '移动', '企业法人' insert into tb select '王九', '上海', '网通', '事业法人' insert into tb select '王十', '上海', '铁通', '事业法人' select 城市,sum(case when 企业性质='事业法人' then 1 else 0 end) '事业法人', sum(case when 企业性质='企业法人' then 1 else 0 end) '企业法人' from (select distinct 城市,单位,企业性质 from tb )A group by 城市 /* 城市 事业法人 企业法人 ---- ----------- ----------- 北京 2 2 上海 3 1 (所影响的行数为 2 行) */
------解决方案--------------------
--现在又有新的需求。如下表 --姓名 城市 单位 单位性质 --王一 北京 联通 事业法人 --王二 北京 网通 事业法人 --王三 北京 电信 企业法人 --王四 北京 移动 企业法人 --王五 北京 网通 事业法人 --王六 上海 联通 事业法人 --王七 上海 移动 企业法人 --王八 上海 移动 企业法人 --王九 上海 网通 事业法人 --王十 上海 铁通 事业法人 if OBJECT_ID('tb') is not null drop table tb go create table tb(姓名 varchar(50),城市 varchar(50),单位 varchar(50), 单位性质 varchar(50)) insert into tb select '王一','北京','联通','事业法人' union all select '王二','北京','网通','事业法人' union all select '王三','北京','电信','企业法人' union all select '王四','北京','移动','企业法人' union all select '王五','北京','网通','事业法人' union all select '王六','上海','联通','事业法人' union all select '王七','上海','移动','企业法人' union all select '王八','上海','移动','企业法人' union all select '王九','上海','网通','事业法人' union all select '王十','上海','铁通','事业法人' select * from tb --第一次的需求是要查询北京,上海事业法人、企业法人的员工数量 -- 事业单位员工数 企业单位员工数 -- 北京 3 2 -- 上海 3 2 select 城市, sum(case when 单位性质='事业法人' then 1 else 0 end )as '事业单位员工数' , sum(case when 单位性质='企业法人' then 1 else 0 end) as '企业单位员工数' from tb group by 城市 城市 事业单位员工数 企业单位员工数 ----------------------------- ----------- ----------- 北京 3 2 上海 3 2 (2 行受影响)