说明:
根据"发货表"的数据更新"库存表"的"占用数量",条件:相同商品编号,相同的仓库.请SQL语句,谢谢!
/*发货表
自增主键 发货单号 服务商 商品编号 商品名称 仓库 数量
ID LoadTranNo LoadCarriers sku SKUNAME Loadkz qty
117 H120914000158 深圳市恒7 800542 A2r 503 10
118 H120914000158 深圳市恒7 800541 Cisr 503 6
119 H120914000178 深圳市恒7 105324 sarnl 503 3
120 H120914000178 深圳市恒7 800542 A2r 503 2
121 H120914000178 深圳市恒7 714339 XD2 503 7库存表
自增主键 商品编号 批号 库位 仓库 商品数量 占用数量 留用 日期
ID Sku BatchNo kuwei Loadkz Qty Qty1 Inqty3 Drdate
313 800542 120724809 56112A 503 5 NULL 2012-9-18 15:17
314 800542 120724809 56112B 503 6 NULL 2012-9-18 15:17
315 800542 120911809 56103B 503 14 NULL 2012-9-18 15:17
316 800541 120726801 56F07A 503 1 NULL 2012-9-18 15:17
317 800541 120726801 56H10A 503 7 NULL 2012-9-18 15:17
318 714339 120726801 56O05A 503 13 NULL 2012-9-18 15:17
319 105324 120726801 56O07A 503 1 NULL 2012-9-18 15:17
320 105324 120726801 56O07A 503 2 NULL 2012-9-18 15:17
结果(更新qty1(占用数量)之后得出的结果)
自增主键 商品编号 批号 库位 仓库 商品数量 占用数量 留用 日期
ID Sku BatchNo kuwei Loadkz Qty Qty1 Inqty3 Drdate
313 800542 120724809 56112A 503 5 5 NULL 2012-9-18 15:17
314 800542 120724809 56112B 503 6 6 NULL 2012-9-18 15:17
315 800542 120911809 56103B 503 14 1 NULL 2012-9-18 15:17
316 800541 120726801 56F07A 503 1 1 NULL 2012-9-18 15:17
317 800541 120726801 56H10A 503 7 5 NULL 2012-9-18 15:17
318 714339 120726801 56O05A 503 13 6 NULL 2012-9-18 15:17
319 105324 120726801 56O07A 503 1 1 NULL 2012-9-18 15:17
320 105324 120726801 56O07A 503 2 2 NULL 2012-9-18 15:17最后结果
*/现在只能发100分的贴子,问题解决在发100分,谢谢!

解决方案 »

  1.   

    update 库存表 set 库存表.Inqty3=更新的值 where 发货表.sku=库存表.sku and 发货表.Loadkz=库存表.Loadkz
      

  2.   

    --> 测试数据:[发货表]
    IF OBJECT_ID('[发货表]') IS NOT NULL DROP TABLE [发货表]
    GO 
    CREATE TABLE [发货表]([ID] INT,[LoadTranNo] VARCHAR(13),[LoadCarriers] VARCHAR(9),[sku] INT,[SKUNAME] VARCHAR(5),[Loadkz] INT,[qty] INT)
    INSERT [发货表]
    SELECT 117,'H120914000158','深圳市恒7',800542,'A2r',503,10 UNION ALL
    SELECT 118,'H120914000158','深圳市恒7',800541,'Cisr',503,6 UNION ALL
    SELECT 119,'H120914000178','深圳市恒7',105324,'sarnl',503,3 UNION ALL
    SELECT 120,'H120914000178','深圳市恒7',800542,'A2r',503,2 UNION ALL
    SELECT 121,'H120914000178','深圳市恒7',714339,'XD2',503,7
    --> 测试数据:[库存表]
    IF OBJECT_ID('[库存表]') IS NOT NULL DROP TABLE [库存表]
    GO 
    CREATE TABLE [库存表]([ID] INT,[Sku] INT,[BatchNo] INT,[kuwei] VARCHAR(6),[Loadkz] INT,[Qty] INT,[Qty1] INT,[Inqty3] INT,[Drdate] DATETIME)
    INSERT [库存表]
    SELECT 313,800542,120724809,'56112A',503,5,NULL,NULL,'2012-9-18 15:17' UNION ALL
    SELECT 314,800542,120724809,'56112B',503,6,NULL,NULL,'2012-9-18 15:17' UNION ALL
    SELECT 315,800542,120911809,'56103B',503,14,NULL,NULL,'2012-9-18 15:17' UNION ALL
    SELECT 316,800541,120726801,'56F07A',503,1,NULL,NULL,'2012-9-18 15:17' UNION ALL
    SELECT 317,800541,120726801,'56H10A',503,7,NULL,NULL,'2012-9-18 15:17' UNION ALL
    SELECT 318,714339,120726801,'56O05A',503,13,NULL,NULL,'2012-9-18 15:17' UNION ALL
    SELECT 319,105324,120726801,'56O07A',503,1,NULL,NULL,'2012-9-18 15:17' UNION ALL
    SELECT 320,105324,120726801,'56O07A',503,2,NULL,NULL,'2012-9-18 15:17'
    --------------开始查询--------------------------UPDATE b SET b.qty1=case  when  b.[出货合计] <a.[发货合计] then b.[出货合计] else a.[发货合计] end 

    case when b.[出货合计]-b.[Qty] <a.[发货合计]-a.[发货合计]  then  a.[发货合计]-a.[发货合计] else b.[出货合计]-b.[Qty] end
    from   
    (
    SELECT sku,Loadkz,SUM(qty) AS [发货合计] FROM [发货表] GROUP BY sku,Loadkz
    )a 
    join 
    (
    select*,[出货合计]=(select sum([Qty]) from [库存表] where  [sku]=b.[sku] AND [Loadkz]=b.[Loadkz] and  [ID]<= b.[ID]) 
    from   [库存表]  b   
    )   b 
    on   a.[sku]=b.[sku] AND a.[Loadkz]=b.[Loadkz] SELECT * FROM [库存表]
    ----------------结果----------------------------
    /* 
    ID Sku BatchNo kuwei Loadkz Qty Qty1 Inqty3 Drdate
    313 800542 120724809 56112A 503 5 5 NULL 2012-09-18 15:17:00.000
    314 800542 120724809 56112B 503 6 6 NULL 2012-09-18 15:17:00.000
    315 800542 120911809 56103B 503 14 1 NULL 2012-09-18 15:17:00.000
    316 800541 120726801 56F07A 503 1 1 NULL 2012-09-18 15:17:00.000
    317 800541 120726801 56H10A 503 7 5 NULL 2012-09-18 15:17:00.000
    318 714339 120726801 56O05A 503 13 7 NULL 2012-09-18 15:17:00.000
    319 105324 120726801 56O07A 503 1 1 NULL 2012-09-18 15:17:00.000
    320 105324 120726801 56O07A 503 2 2 NULL 2012-09-18 15:17:00.000
    */
      

  3.   


    update 库存表  on k.Sku = F.sKU  from 库存表 K Inner join 发表表 F set K.qty1=K.Qty1+F.QTY
      

  4.   


    update 库存表  on k.Sku = K.Sku+F.sKU  from 库存表 K Inner join 发表表 F set K.qty1=K.Qty1+F.QTY--上个回复写错了
      

  5.   

    update 库存表  set K.qty1=K.Qty1+F.QTY from 库存表 K Inner join 发表表 F on k.Sku = K.Sku 
    ---擦这个才是正确的日的