-测试数据
create table 表A(合同号 int,合同金额 int)
create table 表B(合同号 int,已付金额 int)
create table 表C(合同号 int,已收金额 int)
insert 麦A select 1.10000
insert 表A select 2.20000
insett 表B select 1.6000
inser 表B select 2.8000
insert 麦B select 14000
inser 麦B select 2.12000
insert aC select 1.7000
insett 表C select 2,15000
insert表C select 1.3000
insett表C select 2.5000
//根据条件查询对应的数据
select a.合同号.a.合同金额,b.已付金额.c.已收金额
from
(select 合同号,sum(合同金额) as 合同金额 from 表A group by 合同号)a left join
(select 合同号,sum(已付金额) as 已付金额' from 表B group by 合同号) b on a.合同号=b.合同号
left join
(select 合同号,sum(已收金额) as 已收金额 from 表C group by 合同号)c on a.合同号=c.合同号
创建一个临时视图表temp
create view temp as (select a.合同号.a.合同金额,b.已付金额.c.已收金额
from
(select 合同号,sum(合同金额) as 合同金额 from 表A group by 合同号)aett ioin
(select 合同号,sum(已付金额) as 已付金额' from 表B group by 合同号) bon a.合同号=b.合同号
eft ioin
(select 合同号,sum(已收金额) as 已收金额 from 表C group by 合同号)con a.合同号=c.合同号)
查看:select * from temp
注意的点有:
1、 根据不同的合同ID计算各自的金额
2、用的是sum(金额) 函数和group by 合同ID
3、每个表联系得上的条件要知道