PeopleSoft PS_JOB表错误REH-REH雇佣记录的SQL识别需求
识别PeopleSoft PS_JOB表中错误的REH-REH变动记录
针对你描述的PS_JOB表规则,以下SQL可以精准定位那些ACTION='REH'且ACTION_REASON='REH',但执行操作时员工已有其他活跃EMPL_RCD的错误记录:
SELECT j.EMPLID, j.EMPL_RCD, j.EFFDT, j.ACTION, j.ACTION_REASON, j.EMPL_STATUS FROM PS_JOB j WHERE j.ACTION = 'REH' AND j.ACTION_REASON = 'REH' AND EXISTS ( SELECT 1 FROM PS_JOB j_active WHERE j_active.EMPLID = j.EMPLID AND j_active.EMPL_RCD <> j.EMPL_RCD AND j_active.EMPL_STATUS = 'A' AND j_active.EFFDT <= j.EFFDT AND (j_active.END_DATE IS NULL OR j_active.END_DATE >= j.EFFDT) ) ORDER BY j.EMPLID, j.EFFDT;
逻辑说明:
- 主查询先筛选出所有标记为
REH-REH的变动记录 - 子查询通过以下条件判断执行该REH操作时,员工是否存在其他活跃职位:
- 关联同一员工(
EMPLID相同)的其他职位(EMPL_RCD不同) - 该职位处于活跃状态(
EMPL_STATUS='A') - 该职位的有效期覆盖当前REH记录的生效日期(
EFFDT):即活跃职位的生效日期不晚于REH操作日期,且结束日期要么为空(永久有效),要么不早于REH操作日期
- 关联同一员工(
这个查询会准确返回你提到的第11、16行这类错误记录,避免之前查询出现的误判问题。
内容的提问来源于stack exchange,提问作者Descagnia
相关产品推荐
相关产品推荐

