【发布时间】:2017-12-19 22:45:55
【问题描述】:
我需要在员工进入薪酬组时找到effective date。它发生在雇用日期、重新雇用日期或转移日期,以最晚者为准。我想我想做的是创建一个最近生效日期的临时表where C1.ACTION=('XFR') AND C1.PAYGROUP=A.PAYGROUP,当该表中的关联是not时,给我most recent hire date。
- A 是栈顶员工数据
- B 是栈顶个人数据
- C 是整个员工记录
最近的雇用日期是
CASE WHEN A.HIRE_DT<=A.REHIRE_DT THEN A.REHIRE_DT
ELSE A.HIRE_DT END MOST_REC_HIREDT
仅供参考,我知道这个查询确实搞砸了,这就是我寻求帮助的原因。
SELECT DISTINCT
A.EMPLID
A.FIRST_NAME||' '||A.LAST_NAME WORKERNAME,
CASE
WHEN(Select Max(C1.EFFDT) FROM JOB C1
WHERE (C.EMPLID=C1.EMPLID
AND C1.ACTION=('TAF')
AND C1.PAYGROUP=A.PAYGROUP
AND C1.EFFDT>=(CASE WHEN A.HIRE_DT<A.REHIRE_DT THEN =A.REHIRE_DT
ELSE A.HIRE_DT END MR_HIRE_DT)))
WHEN A.EMPLID NOT IN JOB C1
THEN (CASE WHEN A.HIRE_DT<=A.REHIRE_DT
THEN A.REHIRE_DT
ELSE A.HIRE_DT END MR_HIRE_DT2)
ELSE 'Null' END EFFDT,
A.PAYGROUP
FROM EMPLOYEES A, PERSONAL_DATA B, JOB C
WHERE
A.EMPLID=B.EMPLID
AND
B.EMPLID=C.EMPLID
AND
A.PAYGROUP=C.PAYGROUP
AND
C.EMPL_STATUS in ('A','L','P','S')
【问题讨论】:
-
真正有助于提供解决方案的是:每个表中的“样本数据”,然后是“预期结果”
-
该查询中的表
B在哪里?您可以使用正确的 ANSI 连接吗?这将帮助您构建更好的查询 -
请包括来自每个表的样本数据,以及您希望得到的输出结果。此外,如果您的
FROM子句中有逗号,那么您很可能做错了什么。使用正确的JOIN。