首页 > 解决方案 > 在给定值后基于特定值的存在进行选择

问题描述

我有一个表“用户”,如下所示。

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

请帮忙。

注意:我已尝试多次,但无法得出正确的查询。因此发布这个。

提前致谢。

标签: sqlsql-servertsql

解决方案


试试这个查询:

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'))


推荐阅读