SQL - использовать таблицу дат для подсчета дней, в которые сотрудник последний раз работал - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть таблица, показывающая, когда сотрудник последний раз работал.Это выглядит следующим образом:

EMPID           Sickness          Date
23333             N            01-FEB-2018
23333             N            02-FEB-2018
23333             N            10-FEB-2018
23333             N            11-FEB-2018

Я хотел бы присоединиться к таблице дат и добавить дополнительный столбец, в котором показана дата, когда сотрудник был бы без работы> =, чем 5 дней.,Пример выходных данных, основанный на вышеприведенном, выглядел бы так:

EMPID           Sickness          NewDate              AbsFlagAdded
23333             N            01-FEB-2018              0
23333             N            02-FEB-2018              0
23333             N            03-FEB-2018              0
23333             N            04-FEB-2018              0
23333             N            05-FEB-2018              0
23333             N            06-FEB-2018              0
23333             N            07-FEB-2018              1
23333             N            08-FEB-2018              0
23333             N            09-FEB-2018              0
23333             N            10-FEB-2018              0
23333             N            11-FEB-2018              0

AbsFlagAdded помечается как 1 7 февраля, поскольку это был 5-й день подряд, когда EMPID 23333 отключался от работы на основе исходной таблицы.

Кто-нибудь может помочь с этим?Я действительно не использовал таблицы дат раньше.Цени любую помощь

Джесс

1 Ответ

0 голосов
/ 12 декабря 2018

Вот один пример использования datediff с case:

select t.empid, d.dt, 
       case when datediff(day, max(t.dt), d.dt) = 5 then 1 else 0 end as absflaggadded
from dates d
    left join yourtable t on d.dt >= t.dt
group by t.empid, d.dt
order by d.dt

Используется dates кактаблица дат.Обратите внимание на проверку outer join - это гарантирует, что вы получите совпадающие результаты вместо значений null, если вы использовали равно.

...