3

我有 4 列 a、b、c、d。我的一些行对所有列都有相同的值,是否有任何选项可以使用 row_number 为这些行插入相同的行号,如果至少有一个值与前一行中的值不同,则继续计数

例子:

a b c d
1 1 1 1
1 1 1 1
1 1 1 2
1 1 1 2
1 1 1 3
1 1 1 3
1 1 2 4

我需要它看起来像:r=row_number

r a b c d
1 1 1 1 1
1 1 1 1 1
2 1 1 1 2
2 1 1 1 2
3 1 1 1 3
3 1 1 1 3
4 1 1 2 4

PS如何在这里写一些像表格一样的东西?

4

1 回答 1

5
declare @t table(a int, b int, c int, d int)
insert @t values(1,1,1,1),(1,1,1,1),(1,1,1,2),
      (1,1,1,2),(1,1,1,3),(1,1,1,3),(1,1,1,4)    
select dense_rank() over(order by a,b,c,d) r, a,b,c,d from @t

结果:

r   a   b   c   d
1   1   1   1   1
1   1   1   1   1
2   1   1   1   2
2   1   1   1   2
3   1   1   1   3
3   1   1   1   3
4   1   1   1   4
于 2013-07-23T13:46:24.067 回答