用left join把三张表合并过滤获取需要的数据

-测试数据
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、每个表联系得上的条件要知道

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值