这个报表如何实现,谢谢指教!

ningsa 2004-07-14 04:24:45
报表功能:统计各部门男女人数.

表table:
name workname sex
汪娜 计供科 女
凌开明 技术科1 男
周寅 质监科 男
朱荷波 八车间 男
邬静娜 八车间 女
钱丹萍 八车间 女
杜丽娟 三车间 女
毛易耀 三车间 男
王仲秋 四车间 男

报表如下:
性别 计供科 技术科1 质监科 八车间 三车间 四车间
男 0 1 1 1 1 1

女 1 0 0 2 1 0

要求用存储过程实现,谢谢指教.

男女只是报表中的一个项目,还有很多项目没有统计.
...全文
130 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-07-14
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s=''
select @s=@s+',['+workname+']=sum(case workname when '''+workname+''' then 1 else 0 end)'
from [table]
group by workname
exec('select 性别=sex'+@s+'
from(
select name,workname,sex from [table]
union all
select name,workname,zhenzhi from [table]
union all
select name,workname,zhichen from [table]
union all
select name,workname,xueli from [table]
)a group by sex')
go
ningsa 2004-07-14
  • 打赏
  • 举报
回复
name workname sex zhenzhi zhichen xueli
汪娜 计供科 女 团员 高级 本科
凌开明 技术科1 男 团员 中级 本科
周寅 质监科 男 团员 中级 本科
朱荷波 八车间 男 党员 初级 大专
邬静娜 八车间 女 党员 初级 本科
钱丹萍 八车间 女 党员 高级 本科
杜丽娟 三车间 女 党员 中级 本科
毛易耀 三车间 男 团员 中级 本科
王仲秋 四车间 男 党员 高级 本科

报表如下:
性别 计供科 技术科1 质监科 八车间 三车间 四车间
男 0 1 1 1 1 1
女 1 0 0 2 1 0
党员 0 0 0 3 1 1
团员 1 1 1 0 1 0
高级 1 0 0 1 0 1
中级 0 1 1 0 2 0
初级 0 0 0 2 2 0
本科 1 1 1 2 2 1
大专 0 0 0 1 0 0
初中 0 0 0 0 0 0

谢谢邹建,请指教!
zjcxc 元老 2004-07-14
  • 打赏
  • 举报
回复
所有的要求一次性举例说清楚.
ningsa 2004-07-14
  • 打赏
  • 举报
回复
邹建:如果要统计的项目有很多呢?如除了性别,还要统计政治面貌(党、团),职称(高级、中级、初级),学历(本科、大专、高中、初中)等信息呢?
zjcxc 元老 2004-07-14
  • 打赏
  • 举报
回复
--测试

--测试数据
create table [table](name varchar(10),workname varchar(10),sex varchar(10))
insert [table] select '汪娜' ,'计供科','女'
union all select '凌开明','技术科1','男'
union all select '周寅' ,'质监科','男'
union all select '朱荷波','八车间','男'
union all select '邬静娜','八车间','女'
union all select '钱丹萍','八车间','女'
union all select '杜丽娟','三车间','女'
union all select '毛易耀','三车间','男'
union all select '王仲秋','四车间','男'
go

--查询
declare @s varchar(8000)
set @s=''
select @s=@s+',['+workname+']=sum(case workname when '''+workname+''' then 1 else 0 end)'
from [table]
group by workname
exec('select 性别=sex'+@s+'
from [table]
group by sex')
go

--删除测试
drop table [table]

/*--测试结果

性别 八车间 计供科 技术科1 三车间 四车间 质监科
----- ------ ------- ------- ------- ------ --------
男 1 0 1 1 1 1
女 2 1 0 1 0 0


--*/
zjcxc 元老 2004-07-14
  • 打赏
  • 举报
回复

declare @s varchar(8000)
set @s=''
select @s=@s+',['+workname+']=sum(case workname when '''+workname+''' then 1 else 0 end)'
from [table]
group by workname
exec('select 性别=sex'+@s+'
from [table]
group by sex')

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧