#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-это номер партии. Строка поступления разделяется, и потребности должны быть связаны с правильным количеством, и, возможно, необходимо создать новые строки с оставшимся количеством, которое еще не было получено. одна строка квитанции может быть связана с несколькими потребностями, где последнюю строку, возможно, потребуется разделить на оставшееся количество.