dev*_*ric 2 t-sql sql-server sql-server-2012
我有下表
Id,Cat1,Cat2,ColA,ColB,
1,1,1 ,,
2,1,1 ,,
3,1,2 ,,
4,1,3 ,,
5,2,11 ,,
6,2,12 ,,
7,2,12 ,,
我需要为Cat2的每个分组列添加一个唯一的序号,从1开始,但是当Cat1更改时,它必须重置为1
我的输出应该是
行,Id,Cat1,Cat2,ColA,ColB,
1,1,1,1 ,,
1,2,1,1 ,,
2,3,1,2 ,,
3,4,1,3 ,,
1,5,2,11 ,,
2,6,2,12 ,,
2,7,2,12 ,,
DENSE_RANK()用于给出唯一值,例如
Row= DENSE_RANK() OVER ( ORDER BY Cat2)
Run Code Online (Sandbox Code Playgroud)
但我需要它根据另一列Cat1重置自身
在Cat1上使用PARTITION BY子句:
Row = DENSE_RANK() OVER ( PARTITION BY Cat1 ORDER BY Cat2)
Run Code Online (Sandbox Code Playgroud)
PARTITION BY子句将首先根据Cat1对DENSE_RANK()进行分区,然后再对它们进行密集排名,这正是您所需要的。