select 编号=isnull(a.编号,b.编号),A数量=isnull(a.数量,0),B数量=isnull(b.数量,0)  from 表A a full join 表B b on a.编号=b.编号

解决方案 »

  1.   

    select t.编号,isnull(a.数量,0) as A数量,isnull(b.数量,0) as B数量
    (select 编号 from 表A union select 编号 from 表B)t
    left join 表A a
    on t.编号=a.编号
    left join 表B b
    on t.编号=b.编号
      

  2.   

    ----or 更简洁的
    select 编号=isnull(a.编号,b.编号),A数量=isnull(a.数量,0),B数量=isnull(b.数量,0)
    from 表A a 
    full join 表B b
    on a.编号=b.编号
      

  3.   

    --测试--创建测试表
    create table 表a(编号 int,数量 int)
    create table 表b(编号 int,数量 int)
    --插入测试数据
    insert 表a
     select 1,1 union select 2,2
    insert 表b
     select 2,5 union select 3,7
    --查询
    select 编号=isnull(a.编号,b.编号),A数量=isnull(a.数量,0),B数量=isnull(b.数量,0)  from 表A a full join 表B b on a.编号=b.编号
    --结果
    /*
    编号          A数量         B数量         
    ----------- ----------- ----------- 
    2           2           5
    3           0           7
    1           1           0(所影响的行数为 3 行)*/