Allocation_Tab 表中
  有一个字段为 Number_Of_Container (int 4),如果发现某条记录的该字段的值为n>1时就将该条记录复制 n-1次,并将新由复制产生的n-1条记录中的 Number_Of_Container字段的内容设为0, 但保留最初记录中 Number_Of_Container
字段中的值不变。

解决方案 »

  1.   

    create table Allocation_Tab(Number_Of_Container int)
    insert Allocation_Tab select 3
    union all select 1
    union all select 4declare @i int
    select @i=max(Number_Of_Container) from Allocation_Tabset rowcount @i
    select ID=identity(int, 1, 1) into #T from syscolumns, sysobjects
    set rowcount 0select Number_Of_Container, Number_Of_Container from Allocation_Tab
    union all 
    select Number_Of_Container, 0 from Allocation_Tab a, #T b
    where a.Number_Of_Container>b.ID and a.Number_Of_Container>1
    order by 1, 2--result
    Number_Of_Container Number_Of_Container 
    ------------------- ------------------- 
    1                   1
    3                   0
    3                   0
    3                   3
    4                   0
    4                   0
    4                   0
    4                   4(8 row(s) affected)
      

  2.   

    提示 insert附近有语法错误
      

  3.   

    我试过,去掉create table Allocation_Tab(Number_Of_Container int)
    就没有问题,原因是我已存在Allocation_tab
    但是运行的结果和我的要求不一样1> 当 allocation_tab 中没有记录时, 该语句组运行后的结果为。
       ID   Number_Of_Container
       1    3
       2    1
       3    4
        (根据要求,结果仍为空才对,因为没有发现有 number_of_container >1的情况)
        虽然你打印出来的结果似呼是对的,但却不对)
       
    2> 当 allocation_tab 中有一条记录  如:
       ID   Number_Of_Container  
       1      3     
       该语句组运行后的结果为。     
       ID   Number_Of_Container  
       1     3
       2     3
       3     1
       4     4
       (这个结果我就更不对了)
       正确结果应为
       ID   Number_Of_Container  
       1     3
       2     0
       3     0 
       
       根据你提供的语句运行后打印出的结果为Number_Of_Container  Number_Of_Container
      1             1
      3             0
      3             0
      3             0
      3             0
      3             3
      3             3
      4             0
      4             0
      4             0
      4             4   
               
      

  4.   

    这样吧
    eg: 
    Allocation_Tab 表如下字段
    ID   Number_Of_Container  PO     Mark_OnOff
    1     3                   po_1   0
    2     4                   po_2   0希望处理后变成
    ID  Number_Of_Container  PO    Mark_OnOff  (这个字段表示一个开关,处理后的数据下次跳过
    1     3                  po_1   1
    2     4                  po_2   1
    3     0                  po_1   1
    4     0                  po_1   1
    5     0                  po_2   1
    6     0                  po_2   1
    7     0                  po_2   1你会发现  po_1 被copy了两条+原来的一条刚好 数据刚好 = 最初的 Number_Of_Container "3"
    同样
    你会发现  po_3 被copy了3条+原来的一条刚好 数据刚好 = 最初的 Number_Of_Container "4"
    并将所有的 开关 关上,下次不做处理不知这样是否清楚
      

  5.   

    不好意思手误 (更正应该是 po_2
    你会发现  po_2 被copy了3条+原来的一条刚好 数据刚好 = 最初的 Number_Of_Container "4"
    并将所有的 开关 关上,下次不做处理