#sql #sql-update #scd
Вопрос:
Я изо всех сил пытался написать запрос на SQL, который устанавливает дату начала нового лицензионного плана компании равной дате истечения срока действия/дате окончания плюс один день предыдущего лицензионного плана компании.
На изображении ниже вы можете более четко видеть, чего я пытаюсь достичь.
То, что я пробовал до сих пор:
Обновите dbo.license_case_study, установите start_date = [Дата истечения срока действия], где [Состояние обслуживания продукта] = «активный» и [Идентификатор компании] = [Идентификатор компании], а start_date не равен нулю
Приведенный выше запрос явно ошибочен, особенно там, где [Идентификатор компании] = [Идентификатор компании]. Я не был уверен, как скопировать дату истечения срока действия/дату окончания срока действия из предыдущего лицензионного плана компании в новый лицензионный план компании. С помощью [Идентификатор компании] = [Идентификатор компании] я пытался сопоставить две строки, чтобы дата окончания не была скопирована в новый лицензионный план какой-либо другой компании.
Копирование даты истечения срока действия/даты окончания действия из планов прекращенных лицензий компаний в планы активных лицензий компаний необходимо выполнять для каждой компании, у которой есть новый план активных лицензий, а не только для одной компании на изображении, которое я прикрепил к этому вопросу. Может быть, мне следует использовать СЛИЯНИЕ вместо ОБНОВЛЕНИЯ?
Я очень благодарен за любые попытки решить этот вопрос и готов предоставить более подробную информацию, если это необходимо.
Лучшие,
Аксель
Комментарии:
1. Пожалуйста, отметьте свой вопрос с помощью СУБД, которую вы используете. СЛИЯНИЕ — это, вероятно, правильный путь
2. Спасибо, Ник.