积极答复者
重新排id

问题
-
id XXX XXX XXX XXX QF
1 03 6001 0000168 000001 0
2 01 5001 0000208 000001 0
3 01 5002 0000232 000001 0
4 01 5003 0000236 000001 0
5 03 6002 0000275 000001 0
6 03 6003 0000300 000001 0
7 01 5004 0000361 000001 1
8 03 6004 0000377 000001 0
9 03 6005 0000404 000001 0
10 03 6006 0000431 000001 0
11 03 6007 0000450 000001 0
12 03 6008 0000458 000001 0
13 01 5005 0000470 000001 0
14 01 5006 0000471 000001 0
15 03 6009 0000512 000001 0
16 03 6010 0000534 000001 0
17 03 6011 0000542 000001 0
18 03 6012 0000556 000001 0
19 03 6013 0000602 000001 0
20 01 5007 0000608 000001 0以QF='1' 的行 重新排id.
结果:
14 03 6001 0000168 000001 0
15 01 5001 0000208 000001 0
16 01 5002 0000232 000001 0
17 01 5003 0000236 000001 0
18 03 6002 0000275 000001 0
19 03 6003 0000300 000001 0
20 01 5004 0000361 000001 1
1 03 6004 0000377 000001 0
2 03 6005 0000404 000001 0
3 03 6006 0000431 000001 0
4 03 6007 0000450 000001 0
5 03 6008 0000458 000001 0
6 01 5005 0000470 000001 0
7 01 5006 0000471 000001 0
8 03 6009 0000512 000001 0
9 03 6010 0000534 000001 0
10 03 6011 0000542 000001 0
11 03 6012 0000556 000001 0
12 03 6013 0000602 000001 0
13 01 5007 0000608 000001 0
答案
-
你好 Pires0803,
根据你的描述,貌似只能一条一条的去UPDATE,如果做批处理的话很困难。 下面是我用游标做的一些测试,只能提供一些思路,请慎重使用游标。
DECLARE @t1 TABLE (Col1 INT, Col2 INT) DECLARE @t2 TABLE (Col1 INT, Col2 INT, Col3 INT) INSERT INTO @t1 VALUES (1,0) INSERT INTO @t1 VALUES (2,0) INSERT INTO @t1 VALUES (3,1) INSERT INTO @t1 VALUES (4,1) INSERT INTO @t1 VALUES (5,0) INSERT INTO @t1 VALUES (6,0) INSERT INTO @t1 VALUES (7,1) DECLARE @Col1 INT DECLARE @Col2 INT DECLARE @i INT =0 DECLARE Cursor1 CURSOR FOR SELECT Col1,Col2 FROM @t1 ORDER BY Col1 OPEN Cursor1 FETCH NEXT FROM Cursor1 INTO @Col1,@Col2 WHILE @@FETCH_STATUS = 0 BEGIN SET @i = CASE WHEN @Col2 = 1 THEN 1 ELSE @i+1 END INSERT INTO @t2 VALUES (@Col1,@Col2,@i) FETCH NEXT FROM Cursor1 INTO @Col1,@Col2 END CLOSE Cursor1 DEALLOCATE Cursor1 SELECT * FROM @t2
Thanks,
Weilin Qiao
Please remember to mark the replies as answers if they help and unmark them if they provide no help. This can be beneficial to other community members reading the thread.- 已标记为答案 WeiLin QiaoModerator 2011年5月31日 8:46
全部回复
-
你好 Pires0803,
根据你的描述,貌似只能一条一条的去UPDATE,如果做批处理的话很困难。 下面是我用游标做的一些测试,只能提供一些思路,请慎重使用游标。
DECLARE @t1 TABLE (Col1 INT, Col2 INT) DECLARE @t2 TABLE (Col1 INT, Col2 INT, Col3 INT) INSERT INTO @t1 VALUES (1,0) INSERT INTO @t1 VALUES (2,0) INSERT INTO @t1 VALUES (3,1) INSERT INTO @t1 VALUES (4,1) INSERT INTO @t1 VALUES (5,0) INSERT INTO @t1 VALUES (6,0) INSERT INTO @t1 VALUES (7,1) DECLARE @Col1 INT DECLARE @Col2 INT DECLARE @i INT =0 DECLARE Cursor1 CURSOR FOR SELECT Col1,Col2 FROM @t1 ORDER BY Col1 OPEN Cursor1 FETCH NEXT FROM Cursor1 INTO @Col1,@Col2 WHILE @@FETCH_STATUS = 0 BEGIN SET @i = CASE WHEN @Col2 = 1 THEN 1 ELSE @i+1 END INSERT INTO @t2 VALUES (@Col1,@Col2,@i) FETCH NEXT FROM Cursor1 INTO @Col1,@Col2 END CLOSE Cursor1 DEALLOCATE Cursor1 SELECT * FROM @t2
Thanks,
Weilin Qiao
Please remember to mark the replies as answers if they help and unmark them if they provide no help. This can be beneficial to other community members reading the thread.- 已标记为答案 WeiLin QiaoModerator 2011年5月31日 8:46