请问:已知入职、离职日期,sql server怎么动态算近12个月的在职人数?

请问各位大佬,现有工号、入职日期、离职日期、公司年月(上月26号~本月25号为一个月),怎么随着月份的更新算这个月过去的12个月的月在职人数呢?

 比如现在是12月,就算2022年1月~12月的月在职人数,算出12行结果

企业微信截图_16698933679762.png

FineReport 牛气冲天的哇 发布于 2022-12-1 19:20 (编辑于 2022-12-1 20:25)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
weibwLv7高级互助
发布于2022-12-1 19:29(编辑于 2022-12-1 19:39)

按照mysql给你写了

select *

from table

where left(replace(入职日期,"-",""),6)<=left(replace(SYSDATE(),"-",""),6)

and (离职日期 is null or replace(离职日期,"-","")>case when day(SYSDATE())<=25 then CONCAT(year(SYSDATE())-1,MONTH(SYSDATE())) 

else CONCAT(year(SYSDATE())-1,month(DATE_ADD(SYSDATE(),INTERVAL -1 month))) end  )

其中image.png

  • 牛气冲天的哇 牛气冲天的哇(提问者) 谢谢您 ! 公司年份月份算出来了的 就是要算12个月的在职人数
    2022-12-01 19:57 
  • weibw weibw 回复 牛气冲天的哇(提问者) 那不就是计算选定时间之前入职的,并且在选定日期之前12个月之前未离职的人数吗?
    2022-12-01 20:02 
  • 牛气冲天的哇 牛气冲天的哇(提问者) 回复 weibw 一下没想好咋写,要算出每个月的月初人数和月末人数,最后得到12行在职人数...
    2022-12-01 20:03 
  • weibw weibw 回复 牛气冲天的哇(提问者) 你要计算每个月的?
    2022-12-01 20:04 
  • 牛气冲天的哇 牛气冲天的哇(提问者) 回复 weibw 是啊 比如现在是12月,就算2022年1月~12月的月在职人数,12行结果
    2022-12-01 20:24 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-12-2 09:24

已入职为例,参考着写离职

SELECT T.MONTH_,count(emp.工号) [入职数量] FROM (

select convert(varchar(7),dateadd(MONTH,number,DATEADD(MONTH,-11,GETDATE())),120)+'-26' as [MONTH_] 

FROM master..spt_values

where type='P' and number>=0 

and dateadd(MONTH,number,DATEADD(MONTH,-11,GETDATE()))<=GETDATE()

) T LEFT JOIN 人员表 EMP ON EMP.入职日期>=T.MONTH_ AND EMP.入职日期<=DATEADD(MONTH,1,T.MONTH_)

group BY T.MONTH_ ORDER BY 1 ASC

  • 1关注人数
  • 551浏览人数
  • 最后回答于:2022-12-2 09:24
    请选择关闭问题的原因
    确定 取消
    返回顶部