select 区域,城市,sum(数量)
from a
where a.区域=b.区域 and a.城市=b.城市
group by 区域,城市
nuion
select 区域,城市,sum(数量)
from b
where a.区域=b.区域 and a.城市=b.城市
group by 区域,城市

解决方案 »

  1.   

    那你的两个sum不是一样的了吗?不懂
      

  2.   

    select 区域,城市,sum(数量) As 总数量
    from a
    group by 区域,城市
    Union All
    select 区域,城市,sum(数量)
    from a
    group by 区域,城市
      

  3.   

    改下select 区域,城市,sum(数量) As 总数量
    from a
    group by 区域,城市
    Union All
    select 区域,城市,sum(数量)
    from b
    group by 区域,城市
      

  4.   

    select 区域,城市,sum(sss) from 
    (
    select a.区域,a.城市,sum(a.数量) sss
    from a
    group by a.区域,a.城市
    nuion all
    select b.区域,b.城市,sum(b.数量) sss
    from b
    group by b.区域,b.城市
    )c
    group by 区域,城市
      

  5.   

    select 区域,城市,sum(数量) from 
    (
    select 区域,城市,数量 from a
    nuion
    select 区域,城市,数量 from b
    )c
    group by 区域,城市
      

  6.   

    先看错了,楼主试试这个。Select 
    IsNull(A.区域,B.区域) As 区域,
    IsNull(A.城市,B.城市) As 城市,
    IsNull(SUM(A.数量),0) As A总数量,
    IsNull(SUM(B.数量),0) As B总数量
    from A 
    Full Join B
    On A.区域=B.区域 And A.城市=B.城市 
    Group By IsNull(A.区域,B.区域),IsNull(A.城市,B.城市)
      

  7.   

    试试select 区域,城市,sum(数量) As 总数量
    from a
    group by 区域,城市
    Union All
    select 区域,城市,sum(数量)
    from b
    group by 区域,城市
      

  8.   

    select 区域,城市,sum(数量) As 总数量
    from a
    group by 区域,城市
    Union All
    select 区域,城市,sum(数量)
    from b
    group by 区域,城市这样可能有重复,把这个放到临时表再SELECT一边啦
      

  9.   

    paoluo(一天到晚游泳的鱼) 老大的
    想法是对的,我试过算出来的汇总数中a表的汇总的数是对的,但b表的全错了
    载帮忙试试吧
      

  10.   

    试一试:
    select 区域,城市,sum(a数量),sum(b数量)
    from 
    (
    select distinct 区域,distinct 城市,a.数量 as a数量,b.数量 as b数量
    from a inner join b
    on a.区域=b.区域 and a.城市=b.城市
    )
    c
    group by 区域,城市
      

  11.   

    Select 
    A.区域 As 区域,
    A.城市 As 城市,
    IsNull(SUM(A.数量),0) As A总数量,
    IsNull(SUM(B.数量),0) As B总数量
    from A,B
    where
    A.区域=B.区域 And A.城市=B.城市 
    Group By A.区域,A.城市
      

  12.   

    select max(a.区域),a.城市,sum(a.数量),sum(b.数量)
    from table_a a inner table_b b
    on a.城市= b.城市
    group by a.城市
    就是这个思路,不过没把区域分出来,估计不同的城市定不在一个区域。
      

  13.   

    create table a(客户名 varchar(20),区域 varchar(20),城市 varchar(20),数量 int)
    insert a select 'aaaa','北方','北京',10
    union all select 'bbbb','北方','天津',15
    union all select 'cccc','南方','上海',25
    union all select 'dddd','南方','广州',5
    go
    create table b(客户名 varchar(20),区域 varchar(20),城市 varchar(20),数量 int)
    insert b select 'aaaa','北方','北京',20
    union all select 'bbbb','北方','广州',10
    union all select 'cccc','北方','天津',2
    union all select 'cccc','南方','上海',20
    union all select 'dddd','南方','广州',20
    --测试
    go
    select 区域,城市,sum(数量)
    from b
    group by 区域,城市
    go
    select a.区域,a.城市,sum(a.数量) as a数量,sum(b.数量) as b数量
    from a inner join b on a.区域=b.区域 and a.城市=b.城市
     group by a.区域 ,a.城市
      

  14.   

    多谢feitianbianfu16()老大写得如此仔细
    但是我再多加了几条数据后,汇总出来的数又变得不对了,
    你可以试试看看
    还是先谢谢你
    a表的数据
    aaaa 北方 北京 10
    bbbb 北方 天津 15
    cccc 南方 上海 25
    dddd 南方 广州 5
    uuuu 北方 北京 50
    oooo 南方 上海 25
    a表的汇总
    北方 北京 60
    南方 广州 5
    南方 上海 50
    北方 天津 15
    b表的数据
    aaaa 北方 北京 20
    bbbb 北方 天津 10
    cccc 北方 天津 2
    cccc 南方 上海 20
    dddd 南方 广州 20
    ererr 南方 上海 20
    b表的汇总
    北方 北京 20
    南方 广州 20
    南方 上海 40
    北方 天津 12
    但是你的汇总是
    北方 北京 60 40
    南方 广州 5 20
    南方 上海 100 80
    北方 天津 30 12
    是不是不对吧!!!
      

  15.   

    这样写就可以了:
    create table a(客户名 varchar(20),区域 varchar(20),城市 varchar(20),数量 int)
    delete a 
    insert a select 'aaaa','北方','北京',10
    union all select 'bbbb','北方','天津',15
    union all select 'cccc','南方','上海',25
    union all select 'dddd','南方','广州',5
    union all select 'eeee','南方','上海',15
    go
    create table b(客户名 varchar(20),区域 varchar(20),城市 varchar(20),数量 int)
    delete b 
    insert b select 'aaaa','北方','北京',20
    union all select 'bbbb','北方','广州',10
    union all select 'cccc','北方','天津',2
    union all select 'cccc','南方','上海',20
    union all select 'dddd','南方','广州',20
    union all select 'eeee','南方','广州',10--测试
    go
    select 区域,城市,sum(数量)
    from b
    group by 区域,城市select 区域,城市,sum(数量)
    from a
    group by 区域,城市
    go
    select a.区域,a.城市,sum(a.数量) as a数量,sum(b.数量) as b数量
    from a left join b on a.区域=b.区域 and a.城市=b.城市
     group by a.区域 ,a.城市select distinct a.区域,a.城市,null  as a数量,null as b数量 
    into  #AA from a join b on a.区域=b.区域 and a.城市=b.城市 update #AA set a数量=a.a数量 from (Select sum(数量) as a数量 ,区域 ,城市  from a group by 区域 ,城市) a
    where #AA.区域=a.区域 and #AA.城市=a.城市 
     update #AA set b数量=b.b数量 from (select sum(数量) as b数量,区域 ,城市 from b group by 区域 ,城市) b 
    where #AA.区域=b.区域 and #AA.城市=b.城市 
     select * from  #AA
      

  16.   

    select isnull(a.区域,b.区域) 区域,isnull(a.城市,b.城市) 城市,isnull(a.数量,0) a数量,isnull(b.数量,0) b数量 from 
    (SELECT 区域, 城市, SUM(数量) AS 数量
    FROM dbo.a
    GROUP BY 区域, 城市) a full join 
    (SELECT 区域, 城市, SUM(数量) AS 数量
    FROM dbo.b
    GROUP BY 区域, 城市) b on a.区域=b.区域 and a.城市=b.城市Select 
    IsNull(A.区域,B.区域) As 区域,
    IsNull(A.城市,B.城市) As 城市,
    IsNull(SUM(A.数量),0) As A总数量,
    IsNull(SUM(B.数量),0) As B总数量
    from A 
    Full Join B
    On A.区域=B.区域 And A.城市=B.城市 
    Group By IsNull(A.区域,B.区域),IsNull(A.城市,B.城市)
    order by A.区域,A.城市
    这两个结果是一样的。
    北方 北京 10 20
    北方 广州 0 10
    北方 天津 15 2
    南方 广州 5 30
    南方 上海 40 20
      

  17.   

    当区域和城市记录有重复的时候结果却不一样。
    A表:
    aaaa 北方 北京 10
    bbbb 北方 天津 15
    cccc 南方 上海 25
    dddd 南方 广州 5
    eeee 南方 上海 15
    aaaa 北方 北京 10
    bbbb 北方 天津 15
    cccc 南方 上海 25
    dddd 南方 广州 5
    eeee 南方 上海 15
    B表:
    aaaa 北方 北京 20
    bbbb 北方 广州 10
    cccc 北方 天津 2
    cccc 南方 上海 20
    dddd 南方 广州 20
    eeee 南方 广州 10
    aaaa 北方 北京 20
    bbbb 北方 广州 10
    cccc 北方 天津 2
    cccc 南方 上海 20
    dddd 南方 广州 20
    eeee 南方 广州 10
    a表和
    SELECT 区域, 城市, SUM(数量) AS 数量
    FROM dbo.a
    GROUP BY 区域, 城市
    --------------------
    北方 北京 20
    南方 广州 10
    南方 上海 80
    北方 天津 30
    B表和
    SELECT 区域, 城市, SUM(数量) AS 数量
    FROM dbo.b
    GROUP BY 区域, 城市
    ---------------------
    北方 北京 40
    北方 广州 20
    南方 广州 60
    南方 上海 40
    北方 天津 4select isnull(a.区域,b.区域) 区域,isnull(a.城市,b.城市) 城市,isnull(a.数量,0) a数量,isnull(b.数量,0) b数量 from 
    (SELECT 区域, 城市, SUM(数量) AS 数量
    FROM dbo.a
    GROUP BY 区域, 城市) a full join 
    (SELECT 区域, 城市, SUM(数量) AS 数量
    FROM dbo.b
    GROUP BY 区域, 城市) b on a.区域=b.区域 and a.城市=b.城市
    -----------------------------
    北方 北京 20 40
    北方 广州 0 20
    北方 天津 30 4
    南方 广州 10 60
    南方 上海 80 40Select 
    IsNull(A.区域,B.区域) As 区域,
    IsNull(A.城市,B.城市) As 城市,
    IsNull(SUM(A.数量),0) As A总数量,
    IsNull(SUM(B.数量),0) As B总数量
    from A 
    Full Join B
    On A.区域=B.区域 And A.城市=B.城市 
    Group By IsNull(A.区域,B.区域),IsNull(A.城市,B.城市)
    order by A.区域,A.城市
    ----------------------------
    北方 北京 40 80
    北方 广州 0 20
    北方 天津 60 8
    南方 广州 40 120
    南方 上海 160 160
      

  18.   

    每个表单独统计的结果是唯一的
    只要将每个表统计的结果放在一起就是了
    怎么会出现两个结果
    这怎么能行啊
    多谢huangpeiyan(虾米)的尽力帮助
    继续求
      

  19.   

    楼主试试这个,是不是这个意思啊。
    select isnull(a.区域,b.区域),isnull(a.城市,b.城市),isnull(aCount,0),isnull(bCount,0) 
    from (select 区域,城市,sum(数量) as aCount from a group by 区域,城市) as t1 
    full join 
    (select 区域,城市,sum(数量) as bCount from b group by 区域,城市) as t2 
    on a.区域=b.区域 and a.城市=b.城市
      

  20.   

    我把我上面的又修改了一下:
    select 区域,城市,sum(数量)
    from a
    group by 区域,城市
    go
    select 区域,城市,sum(数量)
    from b
    group by 区域,城市
    go
    select mm.区域,mm.城市,mm.数量 as a数量,nn.数量 as b数量
     from (select 区域,城市,sum(数量) as 数量  from a group by  a.区域 ,a.城市) mm left join 
     (select 区域,城市,sum(数量) as 数量  from b group by  b.区域 ,b.城市) nn 
      on mm.区域=nn.区域 and mm.城市=nn.城市 
    --测试结果
    区域                   城市                               
    -------------------- -------------------- ----------- 
    北方                   北京                   60
    南方                   广州                   5
    南方                   上海                   50
    北方                   天津                   15(所影响的行数为 4 行)区域                   城市                               
    -------------------- -------------------- ----------- 
    北方                   北京                   20
    北方                   广州                   10
    南方                   广州                   20
    南方                   上海                   40
    北方                   天津                   2(所影响的行数为 5 行)区域                   城市                   a数量         b数量         
    -------------------- -------------------- ----------- ----------- 
    北方                   北京                   60          20
    北方                   天津                   15          2
    南方                   广州                   5           20
    南方                   上海                   50          40