我有下表

我需要为 Cat2 的每个分组列添加一个唯一的序列号,从 1 开始,但是当 Cat1 更改时它必须重置回 1
我的输出应该是

DENSE_RANK() 用于提供唯一值,例如

Row= DENSE_RANK() OVER ( ORDER BY Cat2)
但我需要它根据另一列 Cat1 重置自身

最佳答案

在 Cat1 上使用 PARTITION BY 子句:

Row = DENSE_RANK() OVER ( PARTITION BY Cat1 ORDER BY Cat2)

PARTITION BY 子句将首先根据您的 Cat1 对您的 DENSE_RANK() 进行分区,然后再对它们进行密集排名,这正是您所需要的。

关于sql-server - 如何重置 DENSE_RANK,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36272838/

10-12 19:58