我有 3 个表格用于计算客户的余额,我需要从发票销售金额 + 发票处理 + 税费 + 表格运费中的总金额计算余额,其中发票编号与发票相同_否然后从具有相同发票编号的收入表中减去金额的总和,然后 + 上一个余额,这是上一张发票的余额(上一张发票可以按日期甚至 ID 找到。我希望结果为看起来像平衡
InVoiNo Cust SaleAmount Handling Taxes Ship Income Last_Balance Balnce
A1 A 500 300 200 1295 1000 0.00 1295
A2 A 50 20 30 1860 15000 1295 1755
B1 B 1000 100 10 1495 100 0 2505
C1 C 600 277 0 576 1000 0.00 453
C2 C 600 300 100 636 500 453 1589
这意味着我想从以前的发票中查看并计算每个客户的以前的余额 这是我的表的架构
CREATE TABLE `income` (
`Id` int(11) NOT NULL,
`Invoice_No` varchar(12) NOT NULL,
`Date` date NOT NULL,
`Amount` int(11) NOT NULL,
`Customer` varchar(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `income` (`Id`, `Invoice_No`, `Date`, `Amount`, `Customer`) VALUES
(1, 'A1', '2017-08-02', 700, 'A'),
(2, 'A1', '2017-08-02', 300, 'A'),
(3, 'A2', '2017-08-02', 1500, 'A'),
(4, 'B1', '2017-08-02', 30, 'B'),
(5, 'B1', '2017-08-02', 60, 'B'),
(6, 'B1', '2017-08-02', 10, 'B'),
(7, 'C1', '2017-08-02', 500, 'C'),
(8, 'C1', '2017-08-02', 500, 'C'),
(9, 'C2', '2017-08-02', 500, 'C');
CREATE TABLE `invoices` (
`id` int(11) NOT NULL,
`InVoice_No` varchar(50) NOT NULL,
`Date` datetime DEFAULT NULL,
`Customer` varchar(50) NOT NULL,
`SaleAmount` decimal(32,2) DEFAULT NULL,
`Handling` decimal(32,2) DEFAULT NULL,
`Taxes` decimal(32,2) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `invoices` (`id`, `InVoice_No`, `Date`, `Customer`, `SaleAmount`, `Handling`, `Taxes`) VALUES
(1, 'A1', '2017-08-03 10:19:06', 'A', '500.00', '300.00', '200.00'),
(1, 'D1', '2017-08-03 00:00:00', 'D', '323680.00', '3958.00', '0.00'),
(1, 'A2', '2017-08-03 10:19:06', 'A', '50.00', '20.00', '30.00'),
(1, 'B1', '2017-08-03 10:19:06', 'B', '1000.00', '100.00', '10.00'),
(1, 'C1', '2017-08-03 10:19:06', 'C', '600.00', '277.00', '0.00'),
(1, 'C2', '2017-08-03 10:19:06', 'C', '600.00', '300.00', '100.00'),
(1, 'A3', '2017-08-03 10:19:06', 'A', '60.00', '60.00', '60.00');
CREATE TABLE `shipping` (
`Id` int(11) NOT NULL,
`Date` date NOT NULL,
`Invoice_no` varchar(12) NOT NULL,
`Ship_Amount` int(11) NOT NULL,
`Customer` varchar(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `shipping` (`Id`, `Date`, `Invoice_no`, `Ship_Amount`, `Customer`) VALUES
(1, '2017-08-09', 'A1', 300, 'A'),
(2, '2017-08-02', 'A1', 500, 'A'),
(3, '2017-08-02', 'B1', 250, 'B'),
(4, '2017-08-03', 'B1', 50, 'B'),
(5, '2017-08-02', 'C1', 125, 'C'),
(6, '2017-08-03', 'C1', 451, 'C'),
(7, '2017-08-02', 'C2', 478, 'C'),
(8, '2017-08-03', 'C2', 158, 'C'),
(9, '2017-08-02', 'B1', 785, 'B'),
(10, '2017-08-03', 'B1', 410, 'B'),
(11, '2017-08-02', 'A1', 45, 'A'),
(12, '2017-08-03', 'A1', 100, 'A'),
(13, '2017-08-02', 'A2', 10, 'A'),
(14, '2017-08-03', 'A3', 60, 'A'),
(15, '2017-08-02', 'A1', 350, 'A'),
(16, '2017-08-03', 'A2', 550, 'A'),
(17, '2017-08-02', 'A2', 150, 'A'),
(18, '2017-08-03', 'A2', 500, 'A'),
(19, '2017-08-02', 'A2', 200, 'A'),
(20, '2017-08-03', 'A2', 450, 'A');
ALTER TABLE `income`
ADD PRIMARY KEY (`Id`);
ALTER TABLE `invoices`
ADD PRIMARY KEY (`Customer`,`id`,`InVoice_No`),
ADD UNIQUE KEY `CalNo` (`InVoice_No`);
ALTER TABLE `shipping`
ADD PRIMARY KEY (`Id`);
ALTER TABLE `income`
MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
ALTER TABLE `shipping`
MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;