我有一张表,看起来像这样:
id | name| fk_something
----------------
0 | 25 | 3
1 | 25 | 2
2 | 23 | 1我想添加另一列,其编号在每次行name发生时都会递增,例如:
id | name| fk_something| n
--------------------------
0 | 25 | 3 | 1
1 | 25 | 2 | 2
2 | 23 | 1 | 1我真的不确定如何实现这一点。使用count()时,我只能得到name出现的总次数,但我想增加n的值,以便每一行都有一个不同的值。
发布于 2019-08-20 21:03:58
你想要row_number():
select t.*, row_number() over (partition by name order by id) as n
from table t;发布于 2019-08-20 21:04:09
您可以尝试使用COUNT作为分析函数:
SELECT
id,
name,
fk_something,
COUNT(*) OVER (PARTITION BY name ORDER BY id) n
FROM yourTable
ORDER BY
id;

https://stackoverflow.com/questions/57574320
复制相似问题