Как произвести вставку данных в таблицу на основе каждой из строк в PL SQL
У меня есть SQL запрос, который собирает необходимый мне набор данных в виде
- product_id
- product_name
- vendor_price (берется напряму из БД)
- new_price (высчитываю на ходу рандомно;vendor_price*DBMS_RANDOM.VALUE(1,2))
- vendor_id
- vendor_name
- date
Если обо всем коротко - выбираю продукт, вендора и цену закупки в определенную дату. Как вы понимаете, закупки бывают не каждый день, между закупками есть промежутки в разное количество дней.
Что нужно мне? Мне нужно, чтобы для каждого товара существовала запись о закупке в рамках минимального и максимального дня закупки этого товара (данные нужны для тестирования).
У меня встал вопрос о реализации. Не совсем понимаю, как это сделать, но набор данных у меня уже есть и то хорошо. Пока что я пришел к этому:
- Считать текущую строку
- Если она совпадает со следующей строкой по id_товара,то сравниваем дату
- Мы должны получить дапазон дат между этими датами
- Вставка всех тех же значений, что в 1 строке, кроме цены (новой, она так и остается рандомной) и даты (но дата ставится по порядку)
Дальше нужно перейти к следующей строке и так до конца ...
Буду рад услышать идеи и советы. Спасибо!

Ответы (1 шт):
Спасибо всем за комментарии. Поясню, что я сделал:
- Создал календарь (отдельной таблицей)
- Приджойнил Свои данные к нему по тому условию, которое было необходимо, чтобы данные размножились, как мне надо ( INNER JOIN CALENDAR_D ON CALENDAR_D.calendar_date >= final_data.date_from and CALENDAR_D.calendar_date <=final_data.date_to).
- Так как мне нужно было, чтобы настоящая запись не менялась (в плане цены), я прописал условие CASE WHEN calendar_date = date_from THEN avg_income_vendor_price ELSE ROUND(avg_income_vendor_price*DBMS_RANDOM.VALUE (1.1 ,2), 2) END as price_new. Вопрос можно закрывать.
P.S. Отдельно спасибо @Akina за пример. Натолкнуло на правильные мысли в том числе.
P.P.S. К сожалению, больше данных не могу предоставить, но надеюсь, кому-то в будущем поможет такое решение.