如何统计1年内各个月份的数据啊

StillMiss 2011-05-24 10:09:05
我现在要做两帐个报表
1.在用户选择选择一个份以后,刷出该年份的该月的该部门的学历情况。
2.在用户选择选择一个年份以后,刷出该年份的1-12月的该部门的学历情况。


select 员工资料表.学历代码, count(员工ID) as '人数'

from 员工资料表,部门表

where 员工资料表.部门ID =部门表.部门ID and 员工资料表.在职状态 = 在职 and

部门表.部门内码 like '(这里是动态传参,点击导航节点)%'
group by 员工资料表.学历代码


上面这句只可以统计出当前的数据,根本无法统计到月,或者是1年内的12个月。

这里 部门是动态传参。月份或者年份是动态赋值。

人员资料表里 有在职离职的状态字段。还有一个离职时间字段。没有离职则为null。我觉得是根据这个判断的。

我问题是在month了。求各位大侠支招
...全文
428 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlf1989 2011-05-24
  • 打赏
  • 举报
回复
select 员工资料表.学历代码, count(员工ID) as '人数' ,
datename(yy,员工资料表.离职时间)+datename(mm,员工资料表.离职时间) as '年月'

from 员工资料表,部门表

where 员工资料表.部门ID =部门表.部门ID and 员工资料表.在职状态 = 在职 and

部门表.部门内码 like '(这里是动态传参,点击导航节点)%'
group by 员工资料表.学历代码,
datename(yy,员工资料表.离职时间)+datename(mm,员工资料表.离职时间)
order by '年月'
StillMiss 2011-05-24
  • 打赏
  • 举报
回复
LSD 这个应该有问题,1-12月 每个月都可能存在离职的人,如果有人离职了,那么该部门的人数会减少的。
什么时候离职的,离职时间字段里有记录。应该是根据 离职时间字段来判断。比如

员工资料表.离职时间 between 年份.1.1-年份1.31
AcHerat 元老 2011-05-24
  • 打赏
  • 举报
回复

create proc get_yymonth(@year varchar(4))
as
;with cte as
(
select @year + '-' + right(100 + number,2) as ym
from master..spt_values
where [type] = 'p' and number between 1 and 12
)

select *
from cte

/**
*可以加你的查询语句
*
*select *
*from cte a left join tb b on a.ym = convert(varchar(7),[日期],120)
*where ...
*/

go

exec get_yymonth '2011'

drop proc get_yymonth


/*
ym
---------
2011-01
2011-02
2011-03
2011-04
2011-05
2011-06
2011-07
2011-08
2011-09
2011-10
2011-11
2011-12

(12 行受影响)

*/

-- 方法很多
StillMiss 2011-05-24
  • 打赏
  • 举报
回复
month随便的。控件默认是字符串,我绑定的时候可以转成datetime类型。
中国风 2011-05-24
  • 打赏
  • 举报
回复
select 
a.学历代码,
sum(CASE WHEN MONTH(a.Date)=1 THEN 1 ELSE 0 END) AS [1月],
sum(CASE WHEN MONTH(a.Date)=2 THEN 1 ELSE 0 END) AS [2月],
sum(CASE WHEN MONTH(a.Date)=3 THEN 1 ELSE 0 END) AS [3月],
sum(CASE WHEN MONTH(a.Date)=4 THEN 1 ELSE 0 END) AS [4月],
sum(CASE WHEN MONTH(a.Date)=5 THEN 1 ELSE 0 END) AS [5月],
sum(CASE WHEN MONTH(a.Date)=6 THEN 1 ELSE 0 END) AS [6月],
sum(CASE WHEN MONTH(a.Date)=7 THEN 1 ELSE 0 END) AS [7月],
.......................
,count(a.员工ID) as '總人数'

from 员工资料表 AS a ,部门表 AS b

where a.部门ID =b.部门ID and a.在职状态 = 在职 and

b.部门内码 like '(这里是动态传参,点击导航节点)%'
AND year(a.Date)=2010 --條件為2010年
group by a.学历代码
中国风 2011-05-24
  • 打赏
  • 举报
回复
Month--是Datetime類型還是數據?

34,576

社区成员

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

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