22,300
社区成员




USE tempdb
GO
IF OBJECT_ID('订单表') IS NOT NULL
DROP TABLE 订单表;
GO
CREATE TABLE 订单表
(
订单号 CHAR(8),
下单日期 DATE,
产品 CHAR(15),
订单数量 INT,
订单余数 INT
);
GO
INSERT INTO 订单表 VALUES --订单数量<>订单余数表示该产品之前有销售过
('MD180090','2018-04-03','BH14-084-099-05',600,295),
('MD180091','2018-04-03','BH14-084-099-18',700,248),
('MD180147','2018-06-02','BH14-084-099-18',400,400),
('MD180148','2018-06-02','BH14-084-099-05',500,500);
GO
SELECT * FROM 订单表;
IF OBJECT_ID('销售表') IS NOT NULL
DROP TABLE 销售表;
GO
CREATE TABLE 销售表
(
销售日期 DATE,
销售单号 CHAR(10),
产品 CHAR(15),
销售数量 INT
);
GO
INSERT INTO 销售表 VALUES --同一天同一产品销售单号为个位数,不超过十位数
('2018-07-09','4212345704','BH14-084-099-05',112),
('2018-07-09','4212345704','BH14-084-099-18',102),
('2018-07-09','4212345710','BH14-084-099-05',112),
('2018-07-09','4212345710','BH14-084-099-18',102),
('2018-07-09','4212345716','BH14-084-099-05',186),
('2018-07-09','4212345716','BH14-084-099-18',170),
('2018-07-09','4212345722','BH14-084-099-05',92),
('2018-07-09','4212345722','BH14-084-099-18',84),
('2018-07-09','4212345728','BH14-084-099-05',118),
('2018-07-09','4212345728','BH14-084-099-18',107);
GO
SELECT * FROM 销售表;
----------------------------------------
--运行结果参考如下,对同一产品,不同的销售单号分配到各个订单中去,销售单号可以随意分配,
--如:MD180090单295件产品可以分配为(04单112件+10单112件+16单71件),也可以按下面这样分配
--无论如何,对于同一产品订单号一定要先进先出
----------------------------------------
/*
销售日期 订单号 销售单号 产品 数量
2018-7-9 MD180091 4212345728 BH14-084-099-18 107
2018-7-9 MD180091 4212345704 BH14-084-099-18 102
2018-7-9 MD180091 4212345710 BH14-084-099-18 86
2018-7-9 MD180147 4212345710 BH14-084-099-18 16
2018-7-9 MD180147 4212345716 BH14-084-099-18 170
2018-7-9 MD180147 4212345722 BH14-084-099-18 84
2018-7-9 MD180090 4212345728 BH14-084-099-05 118
2018-7-9 MD180090 4212345704 BH14-084-099-05 112
2018-7-9 MD180090 4212345710 BH14-084-099-05 18
2018-7-9 MD180148 4212345710 BH14-084-099-05 94
2018-7-9 MD180148 4212345716 BH14-084-099-05 186
2018-7-9 MD180148 4212345722 BH14-084-099-05 92
*/
/*
销售日期 订单号 销售单号 产品 数量
2018-7-9 MD180091 4212345728 BH14-084-099-18 107
2018-7-9 MD180091 4212345704 BH14-084-099-18 102
2018-7-9 MD180091 4212345710 BH14-084-099-18 86
2018-7-9 MD180147 4212345710 BH14-084-099-18 16
2018-7-9 MD180147 4212345716 BH14-084-099-18 170
2018-7-9 MD180147 4212345722 BH14-084-099-18 84
2018-7-9 MD180090 4212345728 BH14-084-099-05 118
2018-7-9 MD180090 4212345704 BH14-084-099-05 112
2018-7-9 MD180090 4212345710 BH14-084-099-05 18
2018-7-9 MD180148 4212345710 BH14-084-099-05 94
2018-7-9 MD180148 4212345716 BH14-084-099-05 186
2018-7-9 MD180148 4212345722 BH14-084-099-05 92
*/
结果的前三行,对应的订单号是否应该是MD180090这个,你这个逻辑上才是通的呢?