T-SQL查询:如何获取同时存在于Initials列中的IT部门唯一经理
解法
你可以通过公用表表达式(CTE)先缓存原有符合条件的IT部门员工数据,再筛选匹配同时出现在Initials列的经理值即可,具体T-SQL语句如下:
WITH ITValidStaff AS ( SELECT Initials, Manager FROM EmploymentUser WHERE Department = 'IT' AND (EndDate >= GETDATE() OR DismissedDate >= GETDATE() OR DismissedDate IS NULL) AND LastFlowEditDate IS NOT NULL AND EmployType = 'fixed' AND LastDismissFlowDate IS NULL AND (IsDebugUser IS NULL OR IsDebugUser = '') ) SELECT DISTINCT Manager AS ITDeptManager FROM ITValidStaff WHERE Manager IN (SELECT Initials FROM ITValidStaff)
逻辑说明
- 先用
ITValidStaff公用表表达式存储你原有的筛选结果,无需重复编写冗余的过滤条件 - 通过
WHERE Manager IN (SELECT Initials FROM ITValidStaff)过滤掉不在当前IT部门在职员工列表内的上级(比如你示例中的MPX) DISTINCT关键字用于去重,保证最终只返回唯一的部门经理值
针对你提供的示例数据,该语句最终只会返回FPX,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Stig Kølbæk
相关产品推荐
相关产品推荐

