Включить даты в течение 6 месяцев уволенных сотрудников при отображении активных сотрудников SQL Сервер - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь включить в свой запрос любых сотрудников с датами увольнения за 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)

Кроме того, есть ли способ выполнить sh эту точную дату за 6 месяцев до текущей даты, в отличие от включения всего месяца за 6 месяцев до ?

Ответы [ 2 ]

3 голосов
/ 03 февраля 2020

Если вы просто хотите, чтобы сотрудники были активны или удовлетворяли условиям, введите OR в предложении FROM:

select e.*
from employees e
where e.TerminationDate >= DATEADD(month, -6, current_timestamp) OR
      e.TerminationDate IS NULL;
1 голос
/ 03 февраля 2020

Вместо включения логики c в 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())


или даже лучше, см. Ответ Гордона Линоффа.

...