【问题标题】:reset index every 5th row - Oracle SQL每 5 行重置一次索引 - Oracle SQL
【发布时间】:2022-08-19 01:52:48
【问题描述】:

到达第 5 行后如何使索引列重新开始?我不能用窗口函数来做,因为没有组,我只需要一个最大数为 5 的索引,如下所示:

date index
01.01.21 1
02.01.21 2
03.01.21 3
04.01.21 4
05.01.21 5
06.01.21 1
07.01.21 2

等等。

欣赏任何想法。

  • 如果你想要每第五行(如你的例子所示),你为什么说6日在你的标题中?更重要的是——这和这些有什么关系pl sql?您显然是指 Oracle SQL;如果您不知道 PL/SQL 是什么意思,请不要参考它——您只是混淆了所有人。

标签: oracle


【解决方案1】:

您可以为此目的使用以下解决方案。

  1. 首先,排名(行号分析函数)内联视图中表中的行
  2. 然后,再次使用行号功能与划分为子句按 TRUNC((rnb - 1)/5) 对先前排名的行进行分组
    SELECT t."DATE"
       , row_number()over(PARTITION BY TRUNC((rnb - 1)/5) ORDER BY rnb) as "INDEX"
    FROM (
      select "DATE", row_number()OVER(ORDER BY "DATE") rnb
      from Your_table
    ) t
    ORDER BY 1
    ;
    
    

    demo on db<>fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    相关资源
    最近更新 更多