sql - 培训完成 每 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
解决方案
我认为这也需要一些汇总,因为我认为员工可能会根据 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;
推荐阅读
- javascript - 使用 requirejs 进行引导表本地化会出现错误“无法读取未定义的属性 'locales'”
- spring-boot - 使用 Jmeter 测试后,Spring Boot 的容器内存使用率不低 - Kubernetes
- javascript - VueJS中需要把这个对象改成这个对象数组
- javascript - 在 vue / element ui 对话框中有条件地删除注入的元素
- javascript - React 等待父组件渲染
- css - 本地字体到 scss 文件的反应
- sql - 在带参数的过程中插入语句
- postgresql - 无法使用 Spring Boot 连接 Postgres 数据库
- javascript - 如何对嵌套的obj javascript进行排序
- powershell - 搜索文件和文件夹,包括隐藏