Оператор SQL: как получить дату начала, соответствующую записи без даты окончания - PullRequest
0 голосов
/ 23 января 2019

У меня есть сотрудники, которые запускают и прекращают пользоваться услугой.Эта услуга регистрируется каждый год, так как они имеют право начать обслуживание с начала года и возобновить окончание года.Как я могу получить дату начала, для которой они начали в начале, а не самые последние 01.01.2009.На прилагаемом изображении я хотел бы получить 01-марта-13 в качестве даты начала и 01-января-00 в качестве даты окончания, поскольку сотрудник непрерывно работал с 01-марта-13.

Номер сотрудника является другимДоступен столбец для идентификации сотрудника.

Click for image of dates in Database

1 Ответ

0 голосов
/ 23 января 2019

Хммм.,,Определите, где начинаются периоды работы.Тогда вы можете использовать условное агрегирование:

select empid,
       max(case when prev_stop_date is null or
                     prev_stop_date <> start_date - 1
                then start_date
            end) as start_date,
      max(stop_date) as stop_date
from (select t.*,
             lag(stop_date) over (partition by empid order by start_date) as prev_stop_date
      from t
     ) t
group by empid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...