SQL запрос CTE или while для случая, чтобы разделить строки с правильным количеством

#sql #while-loop #common-table-expression

Вопрос:

У нас есть проблема, которую мы не знаем, как решить, помощь очень приветствуется или пример того, как исправить такие случаи.

Это касается потребностей в закупках, которые были объединены в одну строку закупок. При получении строки могут быть разделены из-за нескольких номеров партий. Ниже мы описали этот случай. должно ли быть рекурсивное решение (cte) для этого или на какое-то время?

Потребности, которые объединены в одну строку покупки

purchase_need_id Количество item_id идентификатор склада идентификатор заказа на покупку purchase_order_line_item_id дата нужна
5303 120.00 114159 8 240 1435 07/08/2021
5304 120.00 114159 8 240 1435 23/07/2021
5344 120.00 114159 8 240 1435 09/07/2021
5345 120.00 114159 8 240 1435 23/08/2021

Получение товара

goods_receipt_id goods_receipt_line_item_id идентификатор заказа на покупку purchase_order_line_item_id item_id Количество lot_id
25 84 240 1435 114159 120.00 654654
25 85 240 1435 114159 180.00 654445

требуется результат, подобный приведенному ниже, отсортирован по дате.

purchase_need_id Количество item_id идентификатор склада идентификатор заказа на покупку purchase_order_line_item_id дата нужна goods_reciept_id goods_receipt_line_item_id
5344 120.00 114159 8 240 1435 09/07/2021 25 84
5304 120.00 114159 8 240 1435 23/07/2021 25 85
5303 60.00 114159 8 240 1435 07/08/2021 25 85
5303 60.00 114159 8 240 1435 07/08/2021
5345 120.00 114159 8 240 1435 23/08/2021

Покупка должна быть обновлена / вставлена по запросу need_date

goods_receipt_id goods_receipt_line_item_id идентификатор заказа на покупку purchase_order_line_item_id item_id Количество lot_id linked purchase_need_id quantity item_id warehouse_id purchase_order_id purchase_order_line_item_id date_needed goods_reciept_id goods_receipt_line_item_id
25 84 240 1435 114159 120.00 654654 —> 5344 120.00 114159 8 240 1435 09/07/2021 25 84
25 85 240 1435 114159 180.00 654445 —> 5304 120.00 114159 8 240 1435 23/07/2021 25 85
—> 5303 60.00 114159 8 240 1435 07/08/2021 25 85
remaining quantity 5303 60.00 114159 8 240 1435 07/08/2021

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

1. Не могли бы вы объяснить бизнес-логику для вашего требуемого результата? И не смог найти batch numbers в своих данных: This concerns purchase needs that have been combined into one purchase line. On receipt, the lines can be split due to multiple batch numbers

2. в этом случае lot_id-это номер партии. Строка поступления разделяется, и потребности должны быть связаны с правильным количеством, и, возможно, необходимо создать новые строки с оставшимся количеством, которое еще не было получено. одна строка квитанции может быть связана с несколькими потребностями, где последнюю строку, возможно, потребуется разделить на оставшееся количество.