Oracle sql 每行生成连续的数字

Oracle sql generate consecutive numbers per row

我有一个带有 seqno 列的 table。我想基于此创建另一列 (grpseqno),其编号仅为 1 到 3,如下所示。如果这是由 Oracle sql 创建的,那就太好了。提前谢谢你。

seqno  grpseqno
1          1
2          2
3          3
4          1
5          2
6          3
7          1

我似乎无法从 1 循环到 3

一个选项可能是这样的 case 表达式:

示例数据:

SQL> with test (seqno) as
  2    (select 1 + level - 1 seqno
  3     from dual
  4     connect by level <= 7
  5    )

查询从这里开始:

  6  select seqno,
  7    case when mod(seqno, 3) = 0 then 3
  8         else mod(seqno, 3)
  9    end grpseqno
 10  from test
 11  order by seqno;

     SEQNO   GRPSEQNO
---------- ----------
         1          1
         2          2
         3          3
         4          1
         5          2
         6          3
         7          1

7 rows selected.

SQL>