--先假定Line_No的值都为NULL
Update a set Line_No=(Select count(1) from 表 Where trx_no=a.trx_no and Line_No is null)
from 表 as a

解决方案 »

  1.   

    select id=identity(int,1,1),trx_no,Line_No into #t from tablename
    select trx_no,line_no=(select count(*) from #t where trx_no=t.trx_no and id<=t.id) from #t t
      

  2.   

    謝謝!lxzm1001(*蓝星之梦*) ( ) 信誉:100 
    你的答案是對的。
      

  3.   

    lxzm1001(*蓝星之梦*) 是查詢,不是更新,WangZWang(先来)的更新不正確的。
      

  4.   

    Create Table TEST
    (trx_no Int,
     Line_No Int)
    Insert TEST Select 12,        Null         
    Union All Select 12,        Null         
    Union All Select 12,        Null     
    Union All Select 20,        Null
    Union All Select 32,        Null
    Union All Select 8,         Null
    Union All Select 8,         Null
    Union All Select 8,         Null
    Union All Select 8,         Null
    Union All Select 5,         Null
    GO
    Declare @Line_No Int,@trx_no Int
    Update TEST Set @Line_No=(Case When trx_no=@trx_no Then @Line_No+1 Else 1 End),@trx_no=trx_no,Line_No=@Line_NoSelect * From TEST
    GO
    Drop Table TEST
    --Result
    /*
    trx_no Line_No
    12 1
    12 2
    12 3
    20 1
    32 1
    8 1
    8 2
    8 3
    8 4
    5 1
    */
      

  5.   

    你只需要將以下語句中的TEST改為你自己的表名即可。Declare @Line_No Int,@trx_no Int
    Update TEST Set @Line_No=(Case When trx_no=@trx_no Then @Line_No+1 Else 1 End),@trx_no=trx_no,Line_No=@Line_No
      

  6.   

    大樹:還是有點問題呀
    我的那個表有很多字段的,trx_no 和 Line_No 只是其中的2個字段,而且這2個子段都是nvarchar類型的 trx_no nvarchar(16)和 Line nvarchar(6)。
      

  7.   

    上面的有一個字段名字寫錯了 Line  應該是  Line_No 還有:Line_No 這個字段在 Update 之前是 有值的。
      

  8.   

    一樣的啊。
    Create Table TEST
    (trx_no nvarchar(16),
     Line_No nvarchar(6))
    Insert TEST Select 12,        Null         
    Union All Select 12,        Null         
    Union All Select 12,        Null     
    Union All Select 20,        Null
    Union All Select 32,        Null
    Union All Select 8,         Null
    Union All Select 8,         Null
    Union All Select 8,         Null
    Union All Select 8,         Null
    Union All Select 5,         Null
    GO
    Declare @Line_No Int,@trx_no Int
    Update TEST Set @Line_No=(Case When trx_no=@trx_no Then @Line_No+1 Else 1 End),@trx_no=trx_no,Line_No=@Line_NoSelect * From TEST
    GO
    Drop Table TEST
    --Result
    /*
    trx_noLine_No
    12 1
    12 2
    12 3
    20 1
    32 1
    8 1
    8 2
    8 3
    8 4
    5 1
    */PS:Line 你為什麼用字符型的??
      

  9.   

    userasp(路明) ( ) 信誉:100  2006-07-19 09:54:00  得分: 0  
     
     
       上面的有一個字段名字寫錯了 Line  應該是  Line_No 還有:Line_No 這個字段在 Update 之前是 有值的。  
     
    ------------------------------
    “有值”,這個值對更新有沒有影響,沒有就不管他。