Сравните даты между строками из одного и того же входного файла на основе идентификатора и реплицируйте строки по дате приращения, используя SQL Server - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь продублировать строки, сравнивая дату текущей строки с датой следующей строки для идентификатора пользователя, и строку следует дублировать, увеличивая дату, где <дата следующей строки. </strong>

Чтобы объяснить подробно

ввод: -

enter image description here

Сравнить Start_DateMonth первого строка со второй строкой и реплицирует строку, увеличивая Start_DateMonth до Start_DateMonth второй строки ввода

Ожидаемый результат: -

enter image description here

Пожалуйста, предложите, если этот лог c может быть реализован с использованием SQL Server.

1 Ответ

0 голосов
/ 25 февраля 2020

Один из способов сделать это - использовать рекурсивный запрос:

with cte (user_id, start_datemonth, start_dateday, lead_start_datemonth) as (
    select 
        user_id, 
        start_datemonth, 
        start_dateday, 
        lead(start_datemonth) over(partition by user_id order by start_datemonth) lead_start_datemonth
    from mytable 
    union all
    select 
        user_id,
        start_datemonth + 1,
        start_dateday,
        lead_start_datemonth
    from cte
    where start_datemonth + 1 < lead_start_datemonth
)
select user_id, start_datemonth, start_dateday from cte

Демонстрация на DB Fiddle :

 user_id | start_datemonth | start_dateday
-------: | --------------: | ------------:
11110002 |          210601 |             1
11110002 |          210602 |             1
11110002 |          210603 |             1
11110002 |          210604 |             2
11110002 |          210605 |             2
11110002 |          210606 |             2
11110002 |          210607 |             4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...