Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Построчный декремент на значение поля?

$
0
0
Уважаемые, подскажите пожалуйста, с какой стороны подойти к решению такой проблемы: есть список товаров на разных складах (у каждого склада свой уровень приоритета), нужно получить определённое количество предметов с этих складов, при том одно наименование предмета может быть получено как целиком из одного склада (если количество достаточно), так и из нескольких складов (в соответствии с приоритетом склада). На скриншоте примерно то, что хотелось бы получить:
Картинка с другого сайта.
Предмета А требуется 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;

Viewing all articles
Browse latest Browse all 7251

Trending Articles