如何解决重新启动增量的Oracle SQL行计数器
我想用Oracle SQL创建一个行计数器。该行计数器应从1到5开始,然后应从1重新开始。
赞:
ORDER,ROW_COUNTER
----- -----------
ORDER1,1
ORDER2,2
ORDER3,3
ORDER4,4
ORDER5,5
ORDER6,1
ORDER7,2
ORDER8,3
ORDER9,4
ORDER10,5
ORDER11,1
ect...
你有什么主意吗?
解决方法
使用row_number()
和算术:
select
order_no,1 + mod(row_number() over(order by order_no) - 1,5) row_counter
from mytable
这假定表的第一列可用于对记录进行排序,尽管拥有比字符串列(例如自动递增的列)更有意义的内容可能更有意义。
旁注:order
是一种SQL语言关键字(如:order by
),因此不是列名的好选择。我在查询中将其重命名为order_no
。
SQL表表示无序集。没有排序,除非有列指定排序。
但是基本思想是使用row_number()
或rownum
和一些算术运算:
select t.*,1 + mod(rownum - 1,5)
from t;
注意:由此产生的结果不是稳定;该表可以按任何顺序读取。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。