问一句SQL: 表A,B结构相同 (CODE,NUM)
现表A数据如下:            表B数据如下:
CODE     NUM             CODE        NUM
1        100              1           10   
2        100              2           10        
3        100              3           10  
4        100              2           10   
5        100              1           10
要求得到表C表C所得数据如下:
CODE      NUM
1          80 <---------100-10-10   
2          80 <---------100-10-10
3          90 <---------100-10
4         100 <---------100
5         100 <---------100
只要一句SQL,谢谢

解决方案 »

  1.   

    declare @a table
    (code int,
    num int
    )
    insert into @a
    select 1,100
    union all
    select 2,100
    union all
    select 3,100
    union all
    select 4,100
    union all
    select 5,100
    declare @b table
    (
    code int,
    num int
    )
    insert into @b
    select 1,10
    union all
    select 2,10
    union all
    select 3,10
    union all
    select 2,10
    union all
    select 1,10select a.code,
    (a.num-isnull((select sum(num) from @b where a.code=code),0)) as Num
    from @a a
      

  2.   

    select CODE,NUM-isnull((SELECT sum(NUM) FROM B WHERE t.CODE=CODE),0) as NUM 
    from A t
      

  3.   

    --测试环境
    declare  @a table (code int , num  int )
    declare @b table (code int , num  int )
    insert into @a select 1,100
    union all select 2,100
    union all select 3,100
    union all select 4,100
    union all select 5,100
    insert into @b select 1,10
    union all select 2,10
    union all select 3,10
    union all select 2,10
    union all select 1,10
    --语句
    select code , num - isnull((select sum(num) from @b where code =a.code) ,0) [num]
    from @a a
      

  4.   

    select a.code,a.num-isnull(sum(b.num),0)
    from a left join b on a.code=b.code
    group by a.code,a.num
      

  5.   

    select a.code,a.num-bb.num as num from a inner join (select code,sum(num) num from b group by code) bb on a.code=bb.code