SQL多表汇总查询,有兴趣的朋友请进

来源:百度知道 编辑:UC知道 时间:2024/05/22 13:26:20
小弟问一个关于多个表的汇总查询

本公司有多个往来单位表,每个往来单位在本公司做多个项目,每个项目有合同金额及首付金额,还有按每个项目付款明细的付款表。

往来单位项目表

单位名称, 项目名称, 合同金额, 首付款
单位一, 项目1, 1000, 100
单位二, 项目2, 5000, 0
单位二, 项目3, 100, 100

付款时细表

项目名称, 付款金额
项目1, 10
项目1, 60
项目1, 30
项目2, 100
项目2, 1

想通过SQ汇总L查询出来的结果是

往来单位名称,合同金额合计,首付款金额合计,付款金额合计
单位一, 1000, 100, 100
单位二, 5100, 100, 101

小弟在这先谢谢过位。
select 单位名称, sum( 合同金额), sum(首付款),sum( 付款金额)
from
往来单位项目表 a ,
付款时细表 b
where
a.项目名称=b.项目名称
group by 单位名称

这个语句我试过,一个往来单位在付款时细表中出现几次付款, sum( 合同金额)及sum(首付款),汇总完的数据就会是 sum( 合同金额)及sum(首付款),乘以几次
按上边的查询得到结果是

往来单位名称,合同金额合计,首付款金额合计,付款金额合计
单位一, 3000, 300, 100
单位二, 10000, 100, 101

经过SQL2005测试的
下面的表和你的表结构一样的。
表A
dwname xmname htmoney sfMoney
dw1 xm1 5000 100
dw2 xm2 8000 300
dw2 xm3 9800 500
表B
xmname fkMoney
xm1 10
xm2 50
xm1 90
xm2 80
xm3 250

SQL语句
select
d.dwname as '单位名称',sum(d.htMoney) as '合同金额',sum(d.sfMoney) as '首付金额',
sum(d.fkMoney) as '付款金额'
from
(select a.*,c.fkMoney from a
inner join
(select b.xmname,sum(b.fkMoney) as 'fkMoney'
from b
group by b.xmname)c
on a.xmname=c.xmname)d
group by d.dwName

结果:
单位名称 合同金额 首付 付款
dw1 5000 100 100
dw2 17800 800 380

select 单位名称, sum( 合同金额), sum(首付款),sum( 付款金额)
from
往来单位项目表 a ,
付款时细表 b
where
a.项目名称=b.项目名称
group by 单位名称