Уважаемые, подскажите пожалуйста, с какой стороны подойти к решению такой проблемы: есть список товаров на разных складах (у каждого склада свой уровень приоритета), нужно получить определённое количество предметов с этих складов, при том одно наименование предмета может быть получено как целиком из одного склада (если количество достаточно), так и из нескольких складов (в соответствии с приоритетом склада). На скриншоте примерно то, что хотелось бы получить:
![Картинка с другого сайта.]()
Предмета А требуется 5 штук и он полностью берётся со склада S1 комната 1W1, а предмет B берётся со складов S1-1W1, S2-2W2, S3-3W2 и остаток из S4-4W1 (или S4-4W2, тут не принципиально т.к. приоритет равный). Сам побороть проблему не могу, т.к. не понимаю, с какой стороны тут браться... Так что за любую помощь буду очень благодарен.
Если требуется заготовка на поэкспериментировать, то вот:

Предмета А требуется 5 штук и он полностью берётся со склада S1 комната 1W1, а предмет B берётся со складов S1-1W1, S2-2W2, S3-3W2 и остаток из S4-4W1 (или S4-4W2, тут не принципиально т.к. приоритет равный). Сам побороть проблему не могу, т.к. не понимаю, с какой стороны тут браться... Так что за любую помощь буду очень благодарен.
Если требуется заготовка на поэкспериментировать, то вот:
declare @AvailableStock table ( ItemCode varchar(20), Store varchar(2), Room varchar(3), StoreRank int, Quantity int ); insert into @AvailableStock values ('A', 'S1', '1W1', 1, 10); insert into @AvailableStock values ('A', 'S1', '1W2', 2, 10); insert into @AvailableStock values ('A', 'S2', '2W1', 10, 10); insert into @AvailableStock values ('A', 'S3', '3W1', 20, 10); insert into @AvailableStock values ('A', 'S3', '3W2', 20, 10); insert into @AvailableStock values ('B', 'S1', '1W1', 1, 2); insert into @AvailableStock values ('B', 'S2', '2W1', 10, 3); insert into @AvailableStock values ('B', 'S3', '3W2', 20, 1); insert into @AvailableStock values ('B', 'S4', '4W1', 30, 2); insert into @AvailableStock values ('B', 'S4', '4W2', 30, 2); declare @NeedStock table ( ItemCode varchar(20), Quantity int ); insert into @NeedStock values ('A', 5); insert into @NeedStock values ('B', 7); select Avail.*,Need.Quantity as NeedQuantity from @AvailableStock Avail join @NeedStock Need on Avail.ItemCode=Need.ItemCode order by ItemCode, StoreRank;