人员任职经历历史表数据问题排查

栏目:s-hr cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

人员任职经历历史表数据问题排查

我们都知道s-HR产品,员工的变动是要记录历史版本的,那么有很多表的生效及失效时间是要符合正常的时间轴的才不会出错。
但日常我们处理客户问题时经常发现 有的表的生效及失效时间不符合正常的时间轴。此贴我们来看一看任职经历历史表的不符合时间轴的脏数据情况。并通过后台脚本查询出存在多少这样的脏数据。任职经历历史表一旦存在脏数据,那么就会影响职员的入职调离等人事业务。
这些错误数据造成在系统中做入职调离甚至其他业务模块等相关操作时异常,常见web端报错提示如
提示不存在任职历史数据、提单存在多条任职历史数据、...


那么接下来我们根据这两种情况进行后台查询:
一个是有人员的任职历史没有一条的失效日期是2199-12-31,另一个是有人员有两条失效日期是2199的任职历史,
现在我们来批量查询一下又多少人是存在这样的脏数据的。


第一种:不存在任职历史数据的(即没有一条的失效日期是2199-12-31的数据)


首先有些用工关系的人员这个任职历史表数据就是不存在2199-12-31的数据的,如离职人员的任职历史数据的失效时间是离职日期,退休人员的失效时间字段也是退休时间。
故下面的查询语句查到的不存在2199-12-31的数据的职员中还要在看职员的员工关系状态是不是离职,才能判断是不是数据问题。



职员在任职记录历史表情况:
1、有大于等于1笔数据
2、一笔都没有

查询语句如下:

----1、有大于等于1笔数据:查询 职员在T_hr_emppostexperiencehis 中有多笔记录的数据,并找出失效日期是最晚的那条且这个失效日期不等于2199-12-31
select fpersonid from(
select fpersonid,max(fleffdt) fleffdt  from T_hr_emppostexperiencehis  group by  fpersonid having(count(*)>=1))t
where  FlEFFDT<>{ts '2199-12-31 00:00:00'} --职员任职历史多笔情况下 查询是否有职员的失效日期不是2199-12-31的数据

---2、一笔都没有:有任职数据但没有任职历史数据的职员
select b.fpersonid from t_hr_emporgrelation a LEFT OUTER JOIN T_hr_emppostexperiencehis b on
a.fpersonid=b.fpersonid where b.fpersonid is null

第二种:一个员工存在多条2199-12-31的数据


 --查询有多笔2199-12-31的数据
select FPersonID from T_hr_emppostexperiencehis where FLeffdt={ts '2199-12-31  00:00:00'}and FASSIGNTYPE=1 group by FPersonID having count(1)>=2

特别提示(重要):本帖仅作为查询系统内脏数据使用,不做修复数据指导依据,如现场使用查询语句查询到脏数据可提单处理。若自行修复,请注意谨慎操作,且要备份表数据在执行修复语句。否则后果自负。

人员任职经历历史表数据问题排查

我们都知道s-HR产品,员工的变动是要记录历史版本的,那么有很多表的生效及失效时间是要符合正常的时间轴的才不会出错。但日常我们处理客...
点击下载文档
分享:
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息