小春BOOK

导航

逐行更新SQL语句

--示例

 --示例数据  
  create   table   表一(Item   varchar(10),Qty   int)  
  insert   表一   select   'A',10    
  union     all     select   'A',12    
  union     all     select   'A',14    
  union     all     select   'B',13    
  union     all     select   'B',60    
  union     all     select   'C',30    
  union     all     select   'C',40    
  union     all     select   'C',10     

  create   table   表二(Item   varchar(10),Qty   int)  
  insert   表二   select   'A',1000  
  union     all     select   'B',70    
  union     all     select   'C',100  
  go  
   
  --查询  
  select   id=identity(int),*   into   #   from   表一  
  select   a.Item,a.Qty,Result=b.Qty-(select   sum(Qty)   from   #   where   Item=a.Item   and   id<=a.id)  
  from   #   a,表二   b  
  where   a.Item=b.Item  
  drop   table   #  
  go  
   
  --删除测试  
  drop   table   表一,表二  
   
  /*--结果  
  Item               Qty                   Result              
  ----------   -----------   -----------    
  A                     10                     990  
  A                     12                     978  
  A                     14                     964  
  B                     13                     57  
  B                     60                     -3  
  C                     30                     70  
  C                     40                     30  
  C                     10                     20  
   
  (所影响的行数为   8   行)


--示例  
   
  --示例数据  
  create   table   表一(Item   varchar(10),Qty   int)  
  insert   表一   select   'A',10    
  union     all     select   'A',12    
  union     all     select   'A',14    
  union     all     select   'B',13    
  union     all     select   'B',60    
  union     all     select   'C',30    
  union     all     select   'C',40    
  union     all     select   'C',10    
   
  create   table   表二(Item   varchar(10),Qty   int)  
  insert   表二   select   'A',1000  
  union     all     select   'B',70    
  union     all     select   'C',100  
  go  
   
  --查询  
  select   id=identity(int),a.*,Result=b.Qty    
  into   #   from   表一   a,表二   b    
  where   a.Item=b.Item  
  order   by   a.Item  
  declare   @Item   varchar(10),@s   int  
  update   #   set    
  @s=case   when   @Item=Item   then   @s-Qty   else   Result-Qty   end,  
  @Item=Item,Result=@s  
  select   *   from   #  
  drop   table   #  
  go  
   
  --删除测试  
  drop   table   表一,表二  
   
  /*--结果  
  Item               Qty                   Result              
  ----------   -----------   -----------    
  A                     10                     990  
  A                     12                     978  
  A                     14                     964  
  B                     13                     57  
  B                     60                     -3  
  C                     30                     70  
  C                     40                     30  
  C                     10                     20  
   
  (所影响的行数为   8   行)  
  --*/  

posted on 2007-01-12 18:08  xiaoc.li  阅读(1231)  评论(0)    收藏  举报