我有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
P.S。如何在这里写一个像桌子的东西?
答案 0 :(得分: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