在一年内查找日期

时间:2013-09-10 20:03:01

标签: ms-access

我正在努力确定在被雇用后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 

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

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

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