日期:2014-05-17  浏览次数:20453 次

自增列的问题


如A表的数据

 name      code
 张三        90
 张三        80
 张三        70
 李四        60
 王五        40
 王五        50


增多一列变成
   name      code     编号
 张三        90        1
 张三        80        2
 张三        70        3
 李四        60        1
 王五        40        2
 王五        50        1

------解决方案--------------------

create table A表
(name varchar(10), code int)

insert into A表
 select '张三', 90 union all
 select '张三', 80 union all
 select '张三', 70 union all
 select '李四', 60 union all
 select '王五', 40 union all
 select '王五', 50


--虚拟增多一列
select name,code,
       row_number() over(partition by name order by code desc) '编号'
 from A表
 order by name desc

/*
name       code        编号
---------- ----------- --------------------
张三         90          1
张三         80          2
张三         70          3