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
謝謝!lxzm1001(*蓝星之梦*) ( ) 信誉:100 你的答案是對的。
lxzm1001(*蓝星之梦*) 是查詢,不是更新,WangZWang(先来)的更新不正確的。
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 */
你只需要將以下語句中的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
大樹:還是有點問題呀 我的那個表有很多字段的,trx_no 和 Line_No 只是其中的2個字段,而且這2個子段都是nvarchar類型的 trx_no nvarchar(16)和 Line nvarchar(6)。
上面的有一個字段名字寫錯了 Line 應該是 Line_No 還有:Line_No 這個字段在 Update 之前是 有值的。
一樣的啊。 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 你為什麼用字符型的??
userasp(路明) ( ) 信誉:100 2006-07-19 09:54:00 得分: 0
上面的有一個字段名字寫錯了 Line 應該是 Line_No 還有:Line_No 這個字段在 Update 之前是 有值的。
select trx_no,line_no=(select count(*) from #t where trx_no=t.trx_no and id<=t.id) from #t t
你的答案是對的。
(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
*/
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
我的那個表有很多字段的,trx_no 和 Line_No 只是其中的2個字段,而且這2個子段都是nvarchar類型的 trx_no nvarchar(16)和 Line nvarchar(6)。
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 你為什麼用字符型的??
上面的有一個字段名字寫錯了 Line 應該是 Line_No 還有:Line_No 這個字段在 Update 之前是 有值的。
------------------------------
“有值”,這個值對更新有沒有影響,沒有就不管他。