Oracle sql每行生成连续数字

发布于 2025-01-15 23:26:20 字数 249 浏览 3 评论 0原文

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

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

我似乎无法从 1 循环到 3

I have a table with a seqno column. I would like to create another column (grpseqno) based on this which is numbered from 1 to 3 only as shown below. It would be neat if this is created by Oracle sql. Thank you in advance.

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

I cannot seem to get to cycle from 1 to 3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过潦 2025-01-22 23:26:20

一种选择可能是这样的 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>

One option might be such a case expression:

Sample data:

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

Query begins here:

  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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文