现个表
cp表
产品编号,库存数量
001      100
002      20现在想通过cp表库存数量更新到kc表的库房数量,把某品的最大库房数量更新为CP的库存数量
实现:
kc表
产品编号,批号,库房数量
001     080201   100
001     080305   0
002     010101   0
002     010102   20

解决方案 »

  1.   


    前提是:cp表的产品编号唯一,否则就得聚合后再更新
    udpate a 
    set 库房数量=isnull(b.库存数量,0) from kc a left join cp b on a.产品编号=b.产品编号
      

  2.   

    update kc set 库房数量 = 库存数量 from (select top 1 * from kc B where B.产品编号 = kc.产品编号 order by B.批号)C,cp
    where cp.产品编号 = C.产品编号
      

  3.   

    update kc set 库房数量 = 库存数量 from (select top 1 * from kc B where B.产品编号 = kc.产品编号 order by B.批号)C,cp
    where cp.产品编号 = C.产品编号 and C.产品编号 = kc.产品编号 anf C.批号 = kc.批号
      

  4.   

    不太清楚你的需求
    看看这个对你是否有帮助
    declare @cp表 table (产品编号 char(100),库存数量 int) 
    insert @cp表 select  
    '001',      100 union all select  
    '002',      20 
    declare @kc表 table (产品编号 char(100),批号 char(100),库房数量 int) 
    insert @kc表 select 
    '001',    '080401',  100 union all select  
    '001',    '080305',  0   union all select 
    '002',    '010101',  0   union all select 
    '002',    '010102',  20 
    update k set k.库房数量=c.库存数量 from @cp表 c,(select * from @kc表 kc where exists(select 1 from @kc表 where 产品编号=kc.产品编号 and 批号>kc.批号 )) k where k.产品编号=c.产品编号
    select * from @kc表
      

  5.   

    整错了,不好意思啦,这样的现有两个表,cp表的库存数量是KC表库房数量的总合,
    cp表 
    产品编号,库存数量 
    001      100 
    002      20 
    kc表 
    产品编号,批号,库房数量 
    001    080201  80
    001    080305  20 
    002    010101  0 
    002    010102  20 
    现在想通过cp表库存数量更新到kc表的库房数量,把某品的最大库房数量更新为CP的库存数量其它库房数量为0使其某产品的库存数量与sum(库房数量)相等,实现: 
    kc表 
    产品编号,批号,库房数量 
    001    080201  100 
    001    080305  0 
    002    010101  0 
    002    010102  20 
      

  6.   

    cp 去更新kc 的哪个批号呢???
      

  7.   

    max(批号)其它相同产品编号的记录为0