创建表测试
。TableOne
(
Id
INT NOT NULL AUTO_INCRMENT ,
Empno
INT NULL ,
名称
VARCHAR(45) NULL ,
余额
DECIMAL(6,2) NULL ,
地点
VARCHAR(45) NULL ,
主键(Id
));
创建表测试
。TableTwo
(
Id
INT NOT NULL AUTO_INCRMENT ,
日期
日期为空,
Empno
INT NULL ,
收据
DECIMAL(6,2) NULL ,
付款
DECIMAL(6,2) NULL ,
状态
VARCHAR(45) NULL ,
主键(Id
));
INSERT INTO test
.tableone
(Empno
, 名称
, 余额
, 地点
) VALUES (100, '约翰', '1500', '沃辛顿特区');
INSERT INTO test
.tableone
(Empno
, 名称
, 余额
, 地点
) VALUES (101, 'Joselin', '1000', 'Dexcity');
INSERT INTO test
.tableone
(Empno
, 名称
, 余额
, 地点
) VALUES (102, 'Rusfal', '0', 'Donxes');
INSERT INTO test
.tableone
(Empno
, 名称
, 余额
, 地点
) VALUES (103, 'Raser', '100', 'versity');
INSERT INTO test
.tableone
(Empno
, 名称
, 余额
, 地点
) VALUES (104, 'rse', '2500', 'sew');
INSERT INTO test
.TableTwo
(日期
, Empno
, 收据
, 付款
, 状态
) VALUES ('2016-08-15', 100, '1000', '0', '确定');
INSERT INTO test
.TableTwo
(日期
, Empno
, 收据
, 付款
, 状态
) VALUES ('2016-08-15', 100, '0', '1000', '确定');
INSERT INTO test
.TableTwo
(日期
, Empno
, 收据
, 付款
、状态
) VALUES ('2016-08-17', 101, '0', '2000', 'OK');
INSERT INTO test
.TableTwo
(日期
, Empno
, 收据
, 付款
, 状态
) VALUES ('2016-08-18', 103, '100', '0', '不正常');
INSERT INTO test
.TableTwo
(日期
, Empno
, 收据
, 付款
, 状态
) VALUES ('2016-08-19', 100, '1500', '0', '确定');
INSERT INTO test
.TableTwo
(日期
, Empno
, 收据
, 付款
, 状态
) VALUES ('2016-08-20', 100, '0', '1000', '确定');
然后我需要输出这个
开始日期“2016-08-18”结束日期“2016-08-20”
Empno 姓名 地点 OB CB
100 约翰·沃辛顿 DC 2400 2000
101 何塞林 德克斯城 1000 0
102 鲁斯法尔·东克斯 0 0
等 103 104
还有
条件 OB 金额少于开始日期,仅基于状态“OK”
论坛 OB=余额+收付款
条件 从日期到日期的 CB 计算仅基于状态 OK
论坛 CB=余额+收付款
最佳答案
使用这个:
SELECT a.id,a.name,sum(amount1)as amount1,sum(Receipt) as Receipt,sum(payment) as payment,
sum(amount1)+sum(Receipt)-sum(payment) as Total,nameid,b.name
FROM test.mas as a left join test.trans as b on a.id=b.nameid GROUP BY a.id;
关于mysql - 如何修复 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38734443/