Удаление перекрытия путем добавления значения в столбец даты вызвало переполнение - PullRequest
0 голосов
/ 26 марта 2020

Мой вопрос связан с этим один . Когда я пытаюсь выполнить этот запрос:

with toupdate as (
      select t.*,
             lag(enddate) over (partition by employee order by startdate) as prev_enddate
      from MyTable t
     ) 
update toupdate
    set startdate = dateadd(day, 1, prev_enddate)
    where startdate <> dateadd(day, 1, prev_enddate);

У меня появляется это сообщение об ошибке:

Добавление значения в столбец «дата» вызвало переполнение.

Зная, что:

SELECT MIN(BI_StartDate),MIN(BI_EndDate),MAX(BI_StartDate),MAX(BI_EndDate)
FROM MyTable

Выход:

MinBIStart  MinBIEnd    MAXBIStart  MAX BIEnd   
1900-12-31  2017-06-27  2020-03-27  9999-12-31

1 Ответ

3 голосов
/ 26 марта 2020

Я предполагаю, что проблема связана с предложением where:

update toupdate
    set startdate = dateadd(day, 1, prev_enddate)
    where (case when prev_enddate < '9999-12-31'
                then 'false'
                when startdate <> dateadd(day, 1, prev_enddate)
                then 'true'
           end) = 'true'

Или вы можете заменить logi c на:

where dateadd(day, -1, startdate) < prev_enddate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...