2013-07-23 20 views
3

我有4列a,b,c,d。 我的一些行對所有列都有相同的值,是否有任何選項可以使用row_number爲這些行插入相同的行號,並在至少有一個值與上一行中的值不同時繼續計數使用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如何在這裏寫一些像桌子一樣的東西?

回答

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 
+0

@MichaelCherevko沒有問題。如果你編輯你的代碼,你可以看到我如何修改你的代碼,使其更具可讀性。下次讓你更容易 –