Как скопировать дату из одной строки в другую с помощью сопоставления (тип SCD 2)

#sql #sql-update #scd

Вопрос:

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

На изображении ниже вы можете более четко видеть, чего я пытаюсь достичь.

Описание запроса

То, что я пробовал до сих пор:

Обновите dbo.license_case_study, установите start_date = [Дата истечения срока действия], где [Состояние обслуживания продукта] = «активный» и [Идентификатор компании] = [Идентификатор компании], а start_date не равен нулю

Приведенный выше запрос явно ошибочен, особенно там, где [Идентификатор компании] = [Идентификатор компании]. Я не был уверен, как скопировать дату истечения срока действия/дату окончания срока действия из предыдущего лицензионного плана компании в новый лицензионный план компании. С помощью [Идентификатор компании] = [Идентификатор компании] я пытался сопоставить две строки, чтобы дата окончания не была скопирована в новый лицензионный план какой-либо другой компании.

Копирование даты истечения срока действия/даты окончания действия из планов прекращенных лицензий компаний в планы активных лицензий компаний необходимо выполнять для каждой компании, у которой есть новый план активных лицензий, а не только для одной компании на изображении, которое я прикрепил к этому вопросу. Может быть, мне следует использовать СЛИЯНИЕ вместо ОБНОВЛЕНИЯ?

Я очень благодарен за любые попытки решить этот вопрос и готов предоставить более подробную информацию, если это необходимо.

Лучшие,

Аксель

Комментарии:

1. Пожалуйста, отметьте свой вопрос с помощью СУБД, которую вы используете. СЛИЯНИЕ — это, вероятно, правильный путь

2. Спасибо, Ник.