select 编号,sum(金额) 金额 into 新表 from (select * from 表1
union all
select * from 表2) aa group by 编号

解决方案 »

  1.   

    假设左表为dd,右表为ee,“001”等字段名为“gjz”,“20.00”等字段名为“val”,运行测试平台为SQL Server 2000:
    select isnull(a.gjz,b.gjz) gjz,isnull(sum(a.val),0)+isnull(sum(b.val),0) val
    from dd a
    full outer join ee b
    on a.gjz=b.gjz
    group by a.gjz,b.gjz
      

  2.   

    楼上:
    002 未显示
    结果是
    001     20.00
    null    30.00
    003    100.00
    004     50.00
      

  3.   

    select 编号,sum(金额) 金额  from (select * from 表1
    union all
    select * from 表2) aa group by 编号有错吗?
      

  4.   

    大哥,我这运行正常啊。我是SQL Server 2000开发者版,你呢?
      

  5.   

    是的
    用full outer join和union all有什么区别?请教
      

  6.   

    union ALL
    在结果中包含所有的行,包括重复行。如果没有指定,则删除重复行。FULL [OUTER] join指定在结果集中包含左表或右表中不满足联接条件的行,并将对应于另一个表的输出列设为 NULL。这是对通常由 INNER JOIN 返回的所有行的补充。
      

  7.   

    select isnull(a.gjz,b.gjz) gjz,isnull(sum(a.val),0)+isnull(sum(b.val),0) val
    ....
    注意:不能将第一个isnull运算符去掉,否则会出现如你的运行结果一样,即“002”成为了“NULL”
      

  8.   

    可用union all
    就报select * from 表2) aa group by 编号 这一行的 as aa错误
      

  9.   

    unit all 出错的原因可能是因为你的几个表字段不一致!
      

  10.   

    我又试了一下Union All方式,结果是正确的,语法为:
    select gjz,sum(val) val from (select gjz,val from dd union all select gjz,val from ee)a
    group by gjz
      

  11.   

    引用Online Books:UNION 运算符
    将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行。这与使用联接组合两个表中的列不同。
    使用 UNION 组合两个查询的结果集的两个基本规则是: 
    1、所有查询中的列数和列的顺序必须相同。
    2、数据类型必须兼容。
      

  12.   

    海原兄:
    select isnull(a.gjz,b.gjz) gjz,isnull(sum(a.val),0)+isnull(sum(b.val),0) val
    是用full outer join 还是union all?