首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

怎么增加一列循环数字的辅助列

2013-11-01 
如何增加一列循环数字的辅助列比如我有如下的表IDNAME1A2B3C4D5E6F7G......现在要增加一列辅助列,以指定的

如何增加一列循环数字的辅助列
比如我有如下的表
ID    NAME
1     A
2     B
3     C
4     D
5     E
6     F
7     G
...
...
现在要增加一列辅助列,以指定的数字无限循环,比如指定是3
结果如下,就是原表不动,增加一列
ID    NAME   newcol
1     A      1
2     B      2
3     C      3
4     D      1
5     E      2
6     F      3
7     G      1
8     H      2
...
...
感觉要用rownumber来做,但想了半天貌似没有简便方法.
求大神指点
[解决办法]

update table
set newcol=id%3
可行不?
[解决办法]
楼上id%3 只能生成0,1,2的值。顺便提下,oracle中取余是MOD。当然rownu是看你的数据存储顺序的,假如你不需要考虑这个顺序问题的话,如下SQL:

SQL> update tab_simo set age = (case when mod(rownum,3)=0 then 3 else mod(rownum,3) end);
 
8 rows updated
 
SQL> select * from tab_simo;
 
        ID NAME           AGE
---------- ------- ----------
         1 A                1
         2 B                2
         3 C                3
         4 D                1
         5 E                2
         6 F                3
         7 G                1
         8 H                2
 
8 rows selected

[解决办法]
decode(MOD(a.id,3),0,3,MOD(a.id,3))

热点排行
Bad Request.