обновлять оператор на основе конечной даты предыдущей строки, равной начальной дате следующей строки - PullRequest
1 голос
/ 03 июля 2019

Я определил перекрывающиеся даты от тренеров, которые обучали пользователей между датой начала и датой окончания. Теперь мне нужно идентифицировать идентификаторы USER_ID, в которых дата окончания одного из их инструкторов совпадает с датой начала их следующего инструктора. Мне нужно отметить их «Y» и «N».

Я сталкиваюсь с проблемой, когда есть тренеры, у которых дата начала и окончания совпадают с датой окончания предыдущих инструкторов для USER_ID.

UPDATE #SERVICE A
SET DIS_ADM_MATCH = CASE WHEN B.FROM_DATE = A.TO_DATE OR
                              A.FROM_DATE  = B.TO_DATE
                         THEN 'Y' ELSE 'N' END
FROM #SERVICE A
INNER JOIN #SERVICE B
ON A.USER_ID = B.USER_ID
AND A.TRAINER_ID <> B.TRAINER_ID;

1 Ответ

1 голос
/ 03 июля 2019

Я думаю, что вы хотите:

update service
    set DIS_ADM_MATCH = (case when exists (select 1
                                           from service s2
                                           where s2.user_id = service.user_id and
                                                 s2.from_date = service.to_date
                                          )
                              then 'Y' else 'N'
                         end);
...