sql - 在给定值后基于特定值的存在进行选择
问题描述
我有一个表“用户”,如下所示。
UserID Status Effective Date
-------------------------------------------
0111 Rehire 5 Apr 2021
0111 Resign 4 Apr 2021
0111 Transfer 10 Mar 2021
0111 Hire 5 Aug 2014
0112 PayrollChange 4 Apr 2021
0112 Resign 3 Apr 2021
0112 Hire 1 Jul 2001
0113 Resign withdraw 3 Apr 2021
0113 Resign 1 Apr 2021
0113 Transfer 1 Nov 2019
0113 Hire 10 Aug 2007
我想创建一个 SQL 查询来识别那些已辞职(不必是最新记录)但没有重新雇用或撤回辞职的用户。考虑到员工可以多次辞职和退出。需要根据生效日期来考虑。我怎样才能创建这样的脚本。
预期输出
UserID Status Effective Date
-------------------------------------------
0112 Resign 3 Apr 2021
请帮忙。
注意:我已尝试多次,但无法得出正确的查询。因此发布这个。
提前致谢。
解决方案
试试这个查询:
SELECT *
FROM Users U1
WHERE U1.Status = 'Resign'
AND NOT EXISTS (SELECT 1
FROM Users U2
wHERE U2.UserId = U1.UserId
AND U2.Status IN ('Rehire', 'Resign withdraw'))
推荐阅读
- python - 我可以在 Django REST 的模型中使用 ModelViewSet 进行自我父级的 POST 和 GET 操作吗?
- java - 如何垂直放置位图
- python-2to3 - Python 2 到 3 = TypeError:“str”对象的描述符“find”不适用于“bytes”对象
- typescript - 模拟进行外部 API 调用的 Typescript 类
- mongodb - 没有 Confluent Cloud 的 Kafka Connect 和 NoSql 连接器?
- python - Cenpy 库无法获取宾夕法尼亚州匹兹堡的数据
- c# - Xamarin.Forms 网格重叠
- python-3.x - Python:为什么函数中定义的对象在函数返回后没有被垃圾收集
- xml - JAXB 解组多个同名节点
- vue.js - 需要帮助从 JSON 创建对象