T1表
编码   名称    数量
1001   酒      50
1002   烟      10
1003   茶      20
1002   烟      15T2表编码    名称    库存
1001    酒     100
1002    烟     100
1003    茶     100
1004    水     100想得到结果是
T2表编码    名称    库存
1001    酒     50
1002    烟     75
1003    茶     80
1004    水     100注意,T1表中数据有重复,并在操作的时候允许T2表中出现负数
其实也就是通过一张表的数量对另一张表进行批量增减,应该如何写?谢谢

解决方案 »

  1.   

    create table t1(编码 int, 名称 nvarchar(10), 数量 int)
    insert into t1 select 1001,'酒',50 
    insert into t1 select 1002,'烟',10 
    insert into t1 select 1003,'茶',20 
    insert into t1 select 1002,'烟',15 
    create table t2(编码 int,名称 nvarchar(10),库存 int)
    insert into t2 select 1001,'酒',100 
    insert into t2 select 1002,'烟',100 
    insert into t2 select 1003,'茶',100 
    insert into t2 select 1004,'水',100 
    go
    update t2 set 库存=库存-isnull((select sum(数量) from t1 where 编码=t2.编码),0)
    select * from t2
    go
    drop table t1,t2
    /*
    编码          名称         库存
    ----------- ---------- -----------
    1001        酒          50
    1002        烟          75
    1003        茶          80
    1004        水          100(4 行受影响)
    */