0

我正在尝试确定在被雇用后 1 年内离开公司的员工人数:

SELECT 
    Min(O896IA_VEMPPRSA.EMP_RHR_DT) AS MinOfEMP_RHR_DT, 
    Max(O867IA_VJOBHST.REC_EFF_STT_DT) AS MaxOfREC_EFF_STT_DT, 
    O896IA_VEMPPRSA.SYS_EMP_ID_NR
FROM O896IA_VEMPPRSA 
INNER JOIN O867IA_VJOBHST 
    ON O896IA_VEMPPRSA.SYS_EMP_ID_NR = O867IA_VJOBHST.SYS_EMP_ID_NR
WHERE 
    O867IA_VJOBHST.EMP_ACN_TYP_CD="TER"
GROUP BY 
    O896IA_VEMPPRSA.SYS_EMP_ID_NR;

EMP_RHR_DT 是最初的雇佣日期,REC_EFF_STT_DT 是他们退出/被解雇的日期。我再次需要 REC_EFF_STT_DT 在 EMP_RHR_DT 的 365 天内。有什么想法吗?

RHR 日期更改示例。在某些情况下,只有一份工作,但工作天数仍然是负数,在其他情况下,这是因为它选择了错误的工作。

Job     MinOfEMP_RHR_DT     MaxOfREC_EFF_STT_DT     daysworked     SYS_EMP_ID_NR
abc1     10/24/2012            4/15/2013               173           123456
abc1     4/25/2013             4/13/2013               -12           234567
abc3     7/8/2013              1/4/2013                -185          891234
abc4     7/8/2013              7/29/2013               21            891234 
4

2 回答 2

0

假设 O896IA_VEMPPRSA 是主表,而 O867IA_VJOBHST 是具有以下数据的明细表:

O896IA_VEMPPRSA:
ID  EMP_RHR_DT      SYS_EMP_ID_NR   Empname
1   8/10/2012       1               John
2   10/10/2012      2               Matthew

O867IA_VJOBHST:
ID  SYS_EMP_ID_NR   EMP_ACN_TYP_CD  REC_EFF_STT_DT
1   1               Married         1/1/2003
2   1               Became dad      8/1/2003
3   1               TER             9/10/2013
5   2               Remarried       1/1/2003
6   2               Remarried       8/1/2003
7   2               TER             9/10/2013

您可以这样做以获得工作天数:

SELECT 
    Min(O896IA_VEMPPRSA.EMP_RHR_DT) AS MinOfEMP_RHR_DT, 
    Max(O867IA_VJOBHST.REC_EFF_STT_DT) AS MaxOfREC_EFF_STT_DT, 
    Max(O867IA_VJOBHST.REC_EFF_STT_DT) - Min(O896IA_VEMPPRSA.EMP_RHR_DT) as daysworked,
    O896IA_VEMPPRSA.SYS_EMP_ID_NR
FROM O896IA_VEMPPRSA 
INNER JOIN O867IA_VJOBHST 
    ON O896IA_VEMPPRSA.SYS_EMP_ID_NR = O867IA_VJOBHST.SYS_EMP_ID_NR
WHERE 
    O867IA_VJOBHST.EMP_ACN_TYP_CD="TER"
GROUP BY 
    O896IA_VEMPPRSA.SYS_EMP_ID_NR;
    HAVING
            (Max(O867IA_VJOBHST.REC_EFF_STT_DT) - Min(O896IA_VEMPPRSA.EMP_RHR_DT)) < 365;
于 2013-09-10T20:12:34.340 回答
0

解决方案是使用 datediff 函数。你最终会得到一个约束,比如:

WHERE DateDiff("yyyy",hiringDate, endingDate)<1

请在 MS-Access 帮助中检查 DateDiff 函数的确切语法

于 2013-09-10T21:42:51.200 回答