SQL在oracle中重复生成1到9的序列号
Posted
技术标签:
【中文标题】SQL在oracle中重复生成1到9的序列号【英文标题】:SQL to generate a serial number from 1 to 9 repeatedly in oracle 【发布时间】:2020-05-11 15:20:37 【问题描述】:我需要在 Oracle SQL Query 中生成序列号..
例子:
rownum (1,2..9,10,11..18,19,20..N)
my_srl_no (1,2..9,1,2..9,1,2..N)
【问题讨论】:
那么N
的上限是多少?
N -- 表的最后一条记录
select mod(rownum - 1, 9) + 1, t.* from table t;
非常感谢..
【参考方案1】:
您正在寻找的是模函数MOD
(https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/MOD.html#GUID-E12A3928-2C50-45B0-B8C3-82432C751B8C)。
如果你要处理的真的是rownum
:
mod(rownum - 1, 9) + 1
但通常您宁愿使用ROW_NUMBER
以便按照某种排序标准对您的行进行编号。无论如何,数学保持不变。
【讨论】:
以上是关于SQL在oracle中重复生成1到9的序列号的主要内容,如果未能解决你的问题,请参考以下文章
如何使用间隔 1 分钟在两个日期之间将时间序列数据生成到 Oracle PL/SQL 中的表中?