22,209
社区成员
发帖
与我相关
我的任务
分享
SELECT YEAR(E_DATE) 离职年度,MONTH(E_DATE) 离职月份,
CASE MONTH(E_DATE)
WHEN 1 THEN COUNT(E_DATE) WHEN 2 THEN COUNT(E_DATE) WHEN 3 THEN COUNT(E_DATE) WHEN 4 THEN COUNT(E_DATE) WHEN 5 THEN COUNT(E_DATE) WHEN 6 THEN COUNT(E_DATE)
WHEN 7 THEN COUNT(E_DATE) WHEN 8 THEN COUNT(E_DATE) WHEN 9 THEN COUNT(E_DATE) WHEN 10 THEN COUNT(E_DATE) WHEN 11 THEN COUNT(E_DATE) WHEN 12 THEN COUNT(E_DATE)
END [离职人数]
FROM TEST_B
GROUP BY E_DATE
查询每月入职人数:
SELECT YEAR(C_DATE) 入职年份,MONTH(C_DATE) 入职月份,
CASE MONTH(C_DATE)
WHEN 1 THEN COUNT(C_DATE) WHEN 2 THEN COUNT(C_DATE) WHEN 3 THEN COUNT(C_DATE) WHEN 4 THEN COUNT(C_DATE) WHEN 5 THEN COUNT(C_DATE) WHEN 6 THEN COUNT(C_DATE)
WHEN 7 THEN COUNT(C_DATE) WHEN 8 THEN COUNT(C_DATE) WHEN 9 THEN COUNT(C_DATE) WHEN 10 THEN COUNT(C_DATE) WHEN 11 THEN COUNT(C_DATE) WHEN 12 THEN COUNT(C_DATE)
END [本月入职]
FROM TEST_B
GROUP BY C_DATE
;with t as (
select '001' as gh,convert(date,'2017-1-10') as fst,convert(date,'2017-1-19') as lst,'主动' as tp
union all
select '002','2017-1-10',null,null
union all
select '003','2017-1-10',null,null
union all
select '004','2017-1-10',null,null
union all
select '005','2017-1-10',null,null
union all
select '006' as gh,convert(date,'2017-1-10') as fst,convert(date,'2017-2-19') as lst,'被动' as tp
union all
select '007' as gh,convert(date,'2017-1-10') as fst,convert(date,'2017-1-19') as lst,'被动' as tp
union all
select '008','2017-1-10',null,null
union all
select '009','2017-1-10',null,null
union all
select '010' as gh,convert(date,'2017-1-10') as fst,convert(date,'2017-2-19') as lst,'被动' as tp
union all
select '011' as gh,convert(date,'2017-1-10') as fst,convert(date,'2017-2-19') as lst,'被动' as tp
union all
select '012','2017-1-10',null,null
union all
select '013' as gh,convert(date,'2017-1-10') as fst,convert(date,'2017-1-19') as lst,'主动' as tp
union all
select '014' as gh,convert(date,'2017-1-10') as fst,convert(date,'2017-2-19') as lst,'被动' as tp
union all
select '015','2017-2-10',null,null
union all
select '016','2017-2-10',null,null
union all
select '017','2017-2-10',null,null
union all
select '018' as gh,convert(date,'2017-2-10') as fst,convert(date,'2017-3-22') as lst,'主动' as tp
union all
select '019' as gh,convert(date,'2017-2-10') as fst,convert(date,'2017-3-22') as lst,'被动' as tp
union all
select '020','2017-2-10',null,null
union all
select '021' as gh,convert(date,'2017-2-10') as fst,convert(date,'2017-3-22') as lst,'主动' as tp
union all
select '022' as gh,convert(date,'2017-2-10') as fst,convert(date,'2017-3-22') as lst,'主动' as tp
),tt as (
select dateadd(month,number,convert(date,'2017-1-1')) as m from master..spt_values where type='p' and number<datediff(month,'2017-1-1',getdate())
)
select * from tt a
cross apply(
select m as 月份min
,convert(varchar(max),year(m))+'年'+convert(varchar(max),month(m))+'月' as 月份
,dateadd(d,-1,dateadd(month,1,m)) as 月份max
,(select count(0) from t where datediff(month,m,lst)=0) as 离职人数
,(select count(0) from t where datediff(d,m,fst)<=0 and (datediff(d,m,lst)>0 or lst is null)) as 月初人数
,(select count(0) from t where datediff(month,m,fst)=0) as 本月入职
,(select count(0) from t where datediff(month,m,fst)<=0 and (datediff(month,m,lst)>0 or lst is null)) as 月末人数
,(select count(0) from t where datediff(month,m,lst)=0 and tp='主动') as 主动
,(select count(0) from t where datediff(month,m,lst)=0 and tp='被动') as 被动
) b