包括离职员工六个月内的日期,同时仍显示在职员工SQL Server

问题描述 投票:0回答:2

我正在尝试在查询中包括终止日期可以追溯到6个月之前的所有员工,同时还包括在职员工。我包括以下内容,但这样做是在过滤掉在职员工。我该如何实现?

JOIN Employees1 e
    ON e.ClientID = c.ClientID
JOIN Employees2 d
    ON d.ClientID = e.ClientID
    AND d.EmployeeUID = e.EmployeeUID
    AND TerminationDate >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6,current_timestamp)), 0)
sql-server join filter ssms
2个回答
1
投票
而不是在joins中包含逻辑,请尝试如下操作:

SELECT e.* FROM Employees1 e WHERE e.TerminateDate IS NULL UNION ALL SELECT e1.* FROM Employees1 e1 WHERE e1.TerminateDate >= DATEADD(m, -6, GetDate())

甚至更好,请参阅Gordon Linoff的回答。

1
投票
如果您只希望活跃或符合条件的员工,则在OR子句中使用FROM

select e.* from employees e where e.TerminationDate >= DATEADD(month, -6, current_timestamp) OR e.TerminationDate IS NULL;

© www.soinside.com 2019 - 2024. All rights reserved.