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

Перераспределение товаров между складами

$
0
0
Господа, помогите найти адекватное по времени решение задачи перераспределения товаров между складами.
Должно работать «Многие-ко-многим» (т.е. "Количество" может делиться).
Есть 2 таблицы складов отправителей и получателей с количествами избытка и недостатка соответственно. На выходе нужно получить Таблицу Отправитель, Получатель, Кол-во.

Например, Исходные Данные для одного товара:
USE tempdb

-- отправители с рангами отправки (в первую очередь с минимальным рангом). num может делиться разным получателям!
CREATE TABLE #source(id_src int, num FLOAT, rang int)
INSERT into #source 
VALUES 
(140,400,1),
(77 ,150,2),
(110,160,3),
(120,300,4),
(115,250,5),
(148,200,6),
(76 ,210,7),
(136,100,8),
(52 ,150,9),
(7  ,110,10)
		
-- получатели отсортированы по num. num может приходить от разных отправителей
CREATE TABLE #destination(id_dest INT,	num	FLOAT)
INSERT into #destination
VALUES 
(22	,800),
(40	,150),	
(44	,100),	
(114 ,90),
(26	,80),
(112 ,50),
(59	,30),
(109 ,20),
(92	,10)
		

-- итог
CREATE TABLE #result (id_src int, id_dest int, num FLOAT)
INSERT into #result
VALUES 
(140,	22     ,400),
(77,          22	,150 ),
(110,	22	,160 ),
(120,	22	,90   ),
(120,	40	,150 ),
(120,	44	,60   ),
(115,	44	,40	),
(115,	114   ,90	),
(115,	26	,80	),
(115,	112	,40   ),
(148,	112	,10	),
(148,	59	,30	),
(148,	109	,20	),
(148,	92	,10	)
				
--DROP TABLE #source
--DROP TABLE #destination
--DROP TABLE #result

Viewing all articles
Browse latest Browse all 7251

Trending Articles