В последнее время склад моей компании начал получать комплектные товары (мы называем их «комплектами»), в которых в одной и той же коробке находятся разные товары (чаще всего разных размеров).
Мы храним их по мере получения.
Однако, когда у нас нет ни одного предмета для отправки (не входящего в комплект), нам нужно открыть комплект, и они разбивают все предметы на отдельные ящики.
Я изо всех сил пытаюсь сделать запрос, который вернет самый старый (ОК, я могу отсортировать по table_ID desc
) и самое близкое совпадение.
Моя цель, при условии наличия списка предметов и количеств, всегда найти «лучшее совпадение», так что в итоге у меня будет меньше работы (и ящиков) для разделения.
Рассмотрим образец из моего инвентаря (в реальной таблице гораздо больше данных и столбцов, таких как местоположение, склад, цена). , et c, но они не нужны для примера):
В этом примере, если меня попросят достать 2 маленькие синие рубашки, ожидаемый доход должен быть комплектом № 5 и 6, потому что :
- наборы № 5 и d 6 - «самый близкий матч» (был бы «идеальный матч», ЕСЛИ я также попросил 2 средних синего цвета) - средняя рубашка - «сопутствующий урон», и тогда я все равно ее распакую
- комплекты от 1 до 4 следует отбросить, так как они наихудшие (у них внутри БОЛЬШОЙ)
- комплект № 7 также является кандидатом. Тем не менее, поскольку внутренняя рубашка другого цвета, в ie с первым правилом, она должна быть менее предпочтительной
SQL Сервер 2016 SP2 - Standard Edition