首页 > 解决方案 > 培训完成 每 24 个月检查一次

问题描述

我试图找出检查用户自开始工作以来是否每 24 个月完成一次特定培训类型所需的正确查询。用户需要每24个月完成一次一定的培训。

    SELECT userid, completiondate 
      FROM trainingevent 
INNER JOIN emplpoyment e 
        ON e.userid = trainingevent.userid
     WHERE userid = 1007 
       AND trainingtype = 5

案例 1:假设就业开始日期是 2017 年 5 月 15 日,那么如果该培训类型在 2017 年 5 月 15 日到 2019 年 5 月 15 日之间的任何时间完成,用户应该显示完成日期。

案例 2:假设就业开始日期是 2017 年 5 月 15 日,那么如果该培训类型在 2019 年 5 月 15 日到 2021 年 5 月 15 日之间的任何时间完成,用户应该显示完成日期。

预期结果应该是:如果用户完成了培训

1007 5/15/2018

预期结果应该是:如果用户没有完成训练

1007 NULL

标签: sqlsql-server

解决方案


我认为这也需要一些汇总,因为我认为员工可能会根据 OP 的描述多次进行培训。所以也许是这样的?

SELECT e.userid,
       MAX(CASE WHEN te.completiondate > DATEADD(MONTH, -24, GETDATE()) THEN te.completiondate END)
FROM dbo.employment e
     LEFT JOIN dbo.trainingevent te ON e.userid = te.userid
                                   AND te.trainingtype = 5
WHERE e.userid = 1007
GROUP BY e.userid;

推荐阅读