0

我正在努力编写一个查询来获取列中值的累积不同计数。

table column:           desired column:
a                       1
b                       1
c                       1
c                       2
c                       3
a                       2
a                       3

解释:

row 1有值a,没有前面的行有值a所以我们计数a一次并得到1

row 2有值b,没有前面的行有值b所以我们计数b一次并得到1

row 3有值c,没有前面的行有值c所以我们计数c一次并得到1

row 4有值c,前面有 1 行有值c,所以我们计数c两次并得到2

row 5有值c,前面有 2 行有值c,所以我们计数c三次并得到3

row 6有值a,前面有 1 行有值a,所以我们计数a两次并得到2

row 7有值a,前面有 2 行有值a,所以我们计数a三次并得到3

任何帮助都会很棒!

4

1 回答 1

1

如果您的 SQL 版本支持它,那么ROW_NUMBER这里是一种选择:

SELECT
    col,
    ROW_NUMBER() OVER (PARTITION BY col ORDER BY col) cn
FROM yourTable;

下面演示的屏幕截图

演示

请注意,ORDER BY上面使用的子句ROW_NUMBER是任意的,因为在列值的分区内,所有列值都将具有相同的值。

于 2020-06-18T04:30:45.183 回答