如何增加一列循环数字的辅助列
比如我有如下的表
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))