【急】求一update Sql语句,解决马上结贴给分!谢谢
数据库中记录是这样的 
 ========= 
 Code         OrderNo 
 1001               1 
 1001               3 
 1001               4 
 2001               2 
 2001               3 
 2001               4   
 =========   
 orderno为code组内顺序号 
 由于对于某个code值   orderno   可能出现间断,不连续 
 所以现在需要将orderno重新排序,使之连续 
 排序后结果为:   
 ========= 
 Code         OrderNo 
 1001               1 
 1001               2 
 1001               3 
 2001               1 
 2001               2 
 2001               3     
 ========= 
 本来是在程序中遍历数据集实现的 
 但是后来发现,一旦数据量增多,执行会变得其慢! 
 所以用sql语句实现的时候也不能用游标 
 请问,这样的要求能用sql语句实现吗? 
 有热心人最好能写成通用的sql语句 
 当然能在sqlserver中通过也可以 
 因为我的sql也要用在ACCESS数据库中(比如declare,case等access就不支持了) 
 万分感谢^_^
------解决方案--------------------create table T(Code int, OrderNo int) 
 insert T select 1001,     1 
 union all select  1001,    3 
 union all select 1001,     4 
 union all select 2001,     2 
 union all select  2001,     3 
 union all select 2001,     4   
 select Code, OrderNo=(select count(*) from T where Code=A.Code and OrderNo <=A.OrderNo) from T as A   
 --result 
 Code        OrderNo      
 ----------- -----------  
 1001        1 
 1001        2 
 1001        3 
 2001        1 
 2001        2 
 2001        3   
 (6 row(s) affected)
------解决方案--------------------declare @a table(code int,orderno int) 
 insert into @a select 1001,1 union all 
 select 1001,3 union all 
 select 1001,4 union all 
 select 2001,2 union all 
 select 2001,3 union all 
 select 2001,4 
 select code,oederno=(select count(distinct orderno) from @a a where b.orderno> =a.orderno and b.code=a.code) from @a b 
 result: 
 code        oederno      
 ----------- -----------  
 1001        1 
 1001        2 
 1001        3 
 2001        1 
 2001        2 
 2001        3   
 (所影响的行数为 6 行)
------解决方案--------------------顶有分就先顶一下
------解决方案--------------------呵呵,大家好快,楼上两位都正解
------解决方案----------------------环境 
 create table tab 
 ( 
 code int, 
 orderno int 
 )   
 insert into tab select 1001,     1 
 insert into tab select 1001,     3 
 insert into tab select 1001,     4 
 insert into tab select 2001,     2 
 insert into tab select 2001,     3 
 insert into tab select 2001,     4   
 --更新语句 
 update a 
 set orderno = (select count(1) from tab where code = a.code and orderno  <= a.orderno) 
 from tab a   
 --查询 
 select * from tab   
 --结果 
 1001	1 
 1001	2 
 1001	3 
 2001	1 
 2001	2 
 2001	3   
 --删除环境 
 drop table tab
------解决方案--------------------lzy6204(为了忘却的记忆) ( ) 信誉:101    Blog  2007-01-11 10:27:41  得分: 0         
    晕哦,按第一位老兄的方法 
 在access中查询出来order的值竟然都是-1        
 ------------ 
 我的SQL語句是在SQL2000在執行的, 不是ACCESS
------解决方案--------------------