Есть две таблицы: остатки и приход. Необходимо приход разместить так, чтобы не смешивать товары, при этом занять минимальное количество свободных ячеек. Можно ли это сделать в одном запросе? Если нет, то как лучше это сделать? Для визуализации нарисовал таблицу того что есть, и третью результирующую таблицу.
Можно ли это сделать в одном запросе? Если нет, то как лучше это сделать?
"Хитрый" код запрос – плохой запрос. Распределяйте топорно во встроенном языке. Запросом получайте только сырые данные, необходимые для распределения и ничего более. Задача в рамках алгоритмизации – элементарная.
Можно, сначала соедините таблицы по номенклатуре, у вас получится таблица где размножится приход, потом через тэта соединение полученной таблицы самой с собой постройте запрос с нарастающим итогом, потом вычитая из размноженного общего остатка нарастающий итог для каждой ячейки получите нужное количество. Как-то так.
Не мучайтесь - сделайте кодом после запроса. У Вас, как я понял, не пропорциональное распределение, а по свободному остатку, т.е. нужно просто заполнить свободные места сверху вниз. Запросом это сделать будет весьма непросто - даже думать не охота, на сколько. При том код очень простой...