当另一列中的值发生变化时,如何增加计数器?

时间:2013-01-17 15:52:00

标签: sql sql-server tsql row-number

我有下表

ID      
12     
12    
25    
25    
78    
78    
78  

我需要能够在ID更改时增加计数器值。

ID    **COUNTER**  
12     1
12     1
25     2
25     2
78     3
78     3
78     3

如何做到这一点?它甚至可能吗?

1 个答案:

答案 0 :(得分:8)

您可以使用dense_rank()

select id,
  dense_rank() over(order by id)  Counter
from yourtable

请参阅SQL Fiddle with Demo

结果:

| ID | COUNTER |
----------------
| 12 |       1 |
| 12 |       1 |
| 25 |       2 |
| 25 |       2 |
| 78 |       3 |
| 78 |       3 |
| 78 |       3 |