表A,(应付款表)
编号,公司名称,应付金额
1    公司A    1000.00
2    公司A    2000.00
3    公司A    3000.00
4    公司B    4000.00
5    公司B    5000.00
6    公司C    6000.00
 
表B,(已付款表)
编号,公司名称,应付金额
1    公司A    3000.00
2    公司A    3000.00
3    公司B    4000.00
4    公司B    4000.00我想得到这样的结果公司名称,应付金额,已付金额,应付合计
公司A    6000.00  6000.00     0.00
公司B    9000.00  8000.00  1000.00
公司C    6000.00     0.00  6000.00

解决方案 »

  1.   

    create table a(编号 int,公司名称 varchar(50),应付金额 decimal(10,2))
    insert into a select 1,'公司A',1000.00
    insert into a select 2,'公司A',2000.00
    insert into a select 3,'公司A',3000.00
    insert into a select 4,'公司B',4000.00
    insert into a select 5,'公司B',5000.00
    insert into a select 6,'公司C',6000.00create table b(编号 int,公司名称 varchar(50),应付金额 decimal(10,2))
    insert into b select 1,'公司A',3000.00
    insert into b select 2,'公司A',3000.00
    insert into b select 3,'公司B',4000.00
    insert into b select 4,'公司B',4000.00
    select a.公司名称,a.应付金额,isnull(b.应付金额,0),a.应付金额-isnull(b.应付金额,0) from (
    select 公司名称,sum(应付金额) as 应付金额 from a group by 公司名称)a left join 
    (
    select 公司名称,sum(应付金额) as 应付金额 from b group by 公司名称
    )b on a.公司名称=b.公司名称公司A 6000.00 6000.00 0.00
    公司B 9000.00 8000.00 1000.00
    公司C 6000.00 0.00 6000.00
      

  2.   


    select a.公司名称,
    a.应付金额 as 应付金额,
    isnull(b.应付金额,0) as 已付金额,
    a.应付金额-isnull(b.应付金额,0) as 应付合计 
    from (select 公司名称,sum(应付金额) as 应付金额 from a group by 公司名称)a left join 
    (select 公司名称,sum(应付金额) as 应付金额 from b group by 公司名称)b 
    on a.公司名称=b.公司名称
    公司名称 应付金额 已付金额 应付合计
    公司A 6000.00 6000.00 0.00
    公司B 9000.00 8000.00 1000.00
    公司C 6000.00 0.00 6000.00