基于两列的行数

nhjlsmyf  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(263)

我期待着尝试创建下面的行号,我已经尝试了这么多的选项,但似乎没有工作。我很感激你的帮助。
我想让行顺序看sub\u id,并为每一个做一个序列号,1,2,3。。。然后我想让它看看光盘,如果改变了,再回到1。我试过连接它们并使用一个键,但我似乎无法让它工作。

ID  sub_id  disc    ROW_NUMBER
1     1      OT       1
1     1      OT       2
1     1      OT       3
1     2      DT       1
1     2      DT       2
1     3      SL       1
1     3      SL       2
1     4      PH       1
1     4      PH       2
1     4      OT       1
1     5      OT       1
1     5      PH       2
1     5      DT       1
1     6      DT       1
1     6      DT       2
1     6      DT       3
1     7      SL       1
1     7      SL       2
1     7      DT       1
1     8      SL       1
1     8      SL       2
1     8      SL       3
1     9      DT       1
1     9      DT       2
1     9      DT       3
1     10     PH       1
1     10     DT       1
1     10     DT       2
1     11     OT       1
1     11     OT       2
1     11     OT       3
1     12     OT       1
1     12     OT       2
1     12     OT       3

update row\ U number()over(partition by sub\ id order by disc)不起作用。当sub\u id更改为2时,排序出错。此时它需要恢复为1,但它是2。

whitzsjs

whitzsjs1#

你似乎想要:

row_number() over (partition by id, sub_id, disc order by id)

注意:没有指定列顺序的列,甚至没有唯一标识每行的列。因此,这只是使用 order by id . 你可能想在这里加入其他的专栏。

vptzau2j

vptzau2j2#

SELECT ID , sub_ID , disc , ROW_NUMBER() OVER (PARTITION BY sub_ID ORDER BY disc)   from your table

相关问题